memlnaut-nisps/manifold/tests/fixtures/curves-golden.json

1089 lines
25 KiB
JSON
Raw Normal View History

{
feat(manifold)!: route input/output pipelines + curves through the WASM core (P4.3/P4.4) One-core-engine P4.3/P4.4: the input/output pipeline processing and the curve catalog now live in the C++/WASM core (nisps/pipeline/*, nisps/core/math.hpp). The TS ports are deleted and the browser drives the WASM chains. Engine: - WasmIML owns a nisps_pipeline_create handle + bridge buffers and exposes setInputConfig (TS InputConfig → 15-float wire), processInput, resetInput, setOutputConfig (Infinity slew → 0), setOutputFreezeMask, processOutput (in place), resetOutput, curveApply, curveApplyBatch (chunked). Handle + buffers created in init_, freed in dispose, output-sized buffers realloc'd on reshape. - Spine routes setInputs through iml.processInput/processOutput (state lives C++-side); config source-of-truth stays TS-side and is pushed on attach / setInputConfig / setOutputConfig. Preserves ?debug=1 fixed-dt determinism (same dt fed to the WASM calls). EngineApi gains setInputConfig/ setOutputConfig/curveApply/curveApplyBatch. - New types-only modules: pipeline-types.ts (InputConfig/OutputConfig + defaults + wire int mappers) and curve-catalog.ts (CurveName + name→id). types.ts declares the pipeline/curve C ABI. engine barrel updated. - DELETED src/engine/{input-pipeline,output-pipeline,curves}.ts. Tests (P4.4 gate — recorded-gesture regression): - pipeline-golden.test.ts now loads the built WASM (indirect-eval shim, tests/wasm-load.ts) and drives the frozen gesture/output fixtures through the C++ chains, honouring the per-event dt clock contract. Tolerance 1e-5 (non-momentum drift <5e-7). The 3 momentum configs carry 1e-2: proven-inherent f32 drift (a byte-faithful f32 port of the exact original algorithm matches the WASM to <6e-8 while both diverge from the f64 capture by ~7-9e-3), NOT a core bug. - curves-golden.json: linear/square/sqrt/centered_power kept as the original f64 captures (C++ matches within <3e-8); exp/log/sigmoid/cubic RE-BASELINED from the WASM (deliberate switch to firmware-exact k=1 exp/log, slope-6 sigmoid, true cubic x^3). Provenance recorded in-file. - _generate.ts rebuilt as the WASM curve re-baseline tool; pipeline-golden-lib trimmed to pure data builders. Docs: fixtures/README.md + manifold/ONBOARDING.md updated. Gates: typecheck, bun test (9), vite build, playwright e2e (27) all green.
2026-07-18 12:21:35 +02:00
"description": "Curve catalog sampled at 129 points x in [0,1] inclusive. linear/square/sqrt/centered_power are the original 2026-07-13 f64 TS captures (behaviour unchanged); exp/log/sigmoid/cubic RE-BASELINED from the canonical C++/WASM core (nisps/core/math.hpp) on the 2026-07-18 P4 migration — see provenance and README.",
"captured": "2026-07-13",
"note": "Captured from the TS engine implementations before the P4 one-core-engine migration. See tests/fixtures/README.md.",
"sampleCount": 129,
"xStep": 0.0078125,
"defaultParams": {
"linear": null,
feat(manifold)!: route input/output pipelines + curves through the WASM core (P4.3/P4.4) One-core-engine P4.3/P4.4: the input/output pipeline processing and the curve catalog now live in the C++/WASM core (nisps/pipeline/*, nisps/core/math.hpp). The TS ports are deleted and the browser drives the WASM chains. Engine: - WasmIML owns a nisps_pipeline_create handle + bridge buffers and exposes setInputConfig (TS InputConfig → 15-float wire), processInput, resetInput, setOutputConfig (Infinity slew → 0), setOutputFreezeMask, processOutput (in place), resetOutput, curveApply, curveApplyBatch (chunked). Handle + buffers created in init_, freed in dispose, output-sized buffers realloc'd on reshape. - Spine routes setInputs through iml.processInput/processOutput (state lives C++-side); config source-of-truth stays TS-side and is pushed on attach / setInputConfig / setOutputConfig. Preserves ?debug=1 fixed-dt determinism (same dt fed to the WASM calls). EngineApi gains setInputConfig/ setOutputConfig/curveApply/curveApplyBatch. - New types-only modules: pipeline-types.ts (InputConfig/OutputConfig + defaults + wire int mappers) and curve-catalog.ts (CurveName + name→id). types.ts declares the pipeline/curve C ABI. engine barrel updated. - DELETED src/engine/{input-pipeline,output-pipeline,curves}.ts. Tests (P4.4 gate — recorded-gesture regression): - pipeline-golden.test.ts now loads the built WASM (indirect-eval shim, tests/wasm-load.ts) and drives the frozen gesture/output fixtures through the C++ chains, honouring the per-event dt clock contract. Tolerance 1e-5 (non-momentum drift <5e-7). The 3 momentum configs carry 1e-2: proven-inherent f32 drift (a byte-faithful f32 port of the exact original algorithm matches the WASM to <6e-8 while both diverge from the f64 capture by ~7-9e-3), NOT a core bug. - curves-golden.json: linear/square/sqrt/centered_power kept as the original f64 captures (C++ matches within <3e-8); exp/log/sigmoid/cubic RE-BASELINED from the WASM (deliberate switch to firmware-exact k=1 exp/log, slope-6 sigmoid, true cubic x^3). Provenance recorded in-file. - _generate.ts rebuilt as the WASM curve re-baseline tool; pipeline-golden-lib trimmed to pure data builders. Docs: fixtures/README.md + manifold/ONBOARDING.md updated. Gates: typecheck, bun test (9), vite build, playwright e2e (27) all green.
2026-07-18 12:21:35 +02:00
"exp": null,
"log": null,
"square": null,
"sqrt": null,
feat(manifold)!: route input/output pipelines + curves through the WASM core (P4.3/P4.4) One-core-engine P4.3/P4.4: the input/output pipeline processing and the curve catalog now live in the C++/WASM core (nisps/pipeline/*, nisps/core/math.hpp). The TS ports are deleted and the browser drives the WASM chains. Engine: - WasmIML owns a nisps_pipeline_create handle + bridge buffers and exposes setInputConfig (TS InputConfig → 15-float wire), processInput, resetInput, setOutputConfig (Infinity slew → 0), setOutputFreezeMask, processOutput (in place), resetOutput, curveApply, curveApplyBatch (chunked). Handle + buffers created in init_, freed in dispose, output-sized buffers realloc'd on reshape. - Spine routes setInputs through iml.processInput/processOutput (state lives C++-side); config source-of-truth stays TS-side and is pushed on attach / setInputConfig / setOutputConfig. Preserves ?debug=1 fixed-dt determinism (same dt fed to the WASM calls). EngineApi gains setInputConfig/ setOutputConfig/curveApply/curveApplyBatch. - New types-only modules: pipeline-types.ts (InputConfig/OutputConfig + defaults + wire int mappers) and curve-catalog.ts (CurveName + name→id). types.ts declares the pipeline/curve C ABI. engine barrel updated. - DELETED src/engine/{input-pipeline,output-pipeline,curves}.ts. Tests (P4.4 gate — recorded-gesture regression): - pipeline-golden.test.ts now loads the built WASM (indirect-eval shim, tests/wasm-load.ts) and drives the frozen gesture/output fixtures through the C++ chains, honouring the per-event dt clock contract. Tolerance 1e-5 (non-momentum drift <5e-7). The 3 momentum configs carry 1e-2: proven-inherent f32 drift (a byte-faithful f32 port of the exact original algorithm matches the WASM to <6e-8 while both diverge from the f64 capture by ~7-9e-3), NOT a core bug. - curves-golden.json: linear/square/sqrt/centered_power kept as the original f64 captures (C++ matches within <3e-8); exp/log/sigmoid/cubic RE-BASELINED from the WASM (deliberate switch to firmware-exact k=1 exp/log, slope-6 sigmoid, true cubic x^3). Provenance recorded in-file. - _generate.ts rebuilt as the WASM curve re-baseline tool; pipeline-golden-lib trimmed to pure data builders. Docs: fixtures/README.md + manifold/ONBOARDING.md updated. Gates: typecheck, bun test (9), vite build, playwright e2e (27) all green.
2026-07-18 12:21:35 +02:00
"sigmoid": null,
"cubic": null,
"centered_power": 1
},
"curves": {
"linear": [
0,
0.0078125,
0.015625,
0.0234375,
0.03125,
0.0390625,
0.046875,
0.0546875,
0.0625,
0.0703125,
0.078125,
0.0859375,
0.09375,
0.1015625,
0.109375,
0.1171875,
0.125,
0.1328125,
0.140625,
0.1484375,
0.15625,
0.1640625,
0.171875,
0.1796875,
0.1875,
0.1953125,
0.203125,
0.2109375,
0.21875,
0.2265625,
0.234375,
0.2421875,
0.25,
0.2578125,
0.265625,
0.2734375,
0.28125,
0.2890625,
0.296875,
0.3046875,
0.3125,
0.3203125,
0.328125,
0.3359375,
0.34375,
0.3515625,
0.359375,
0.3671875,
0.375,
0.3828125,
0.390625,
0.3984375,
0.40625,
0.4140625,
0.421875,
0.4296875,
0.4375,
0.4453125,
0.453125,
0.4609375,
0.46875,
0.4765625,
0.484375,
0.4921875,
0.5,
0.5078125,
0.515625,
0.5234375,
0.53125,
0.5390625,
0.546875,
0.5546875,
0.5625,
0.5703125,
0.578125,
0.5859375,
0.59375,
0.6015625,
0.609375,
0.6171875,
0.625,
0.6328125,
0.640625,
0.6484375,
0.65625,
0.6640625,
0.671875,
0.6796875,
0.6875,
0.6953125,
0.703125,
0.7109375,
0.71875,
0.7265625,
0.734375,
0.7421875,
0.75,
0.7578125,
0.765625,
0.7734375,
0.78125,
0.7890625,
0.796875,
0.8046875,
0.8125,
0.8203125,
0.828125,
0.8359375,
0.84375,
0.8515625,
0.859375,
0.8671875,
0.875,
0.8828125,
0.890625,
0.8984375,
0.90625,
0.9140625,
0.921875,
0.9296875,
0.9375,
0.9453125,
0.953125,
0.9609375,
0.96875,
0.9765625,
0.984375,
0.9921875,
1
],
"exp": [
0,
feat(manifold)!: route input/output pipelines + curves through the WASM core (P4.3/P4.4) One-core-engine P4.3/P4.4: the input/output pipeline processing and the curve catalog now live in the C++/WASM core (nisps/pipeline/*, nisps/core/math.hpp). The TS ports are deleted and the browser drives the WASM chains. Engine: - WasmIML owns a nisps_pipeline_create handle + bridge buffers and exposes setInputConfig (TS InputConfig → 15-float wire), processInput, resetInput, setOutputConfig (Infinity slew → 0), setOutputFreezeMask, processOutput (in place), resetOutput, curveApply, curveApplyBatch (chunked). Handle + buffers created in init_, freed in dispose, output-sized buffers realloc'd on reshape. - Spine routes setInputs through iml.processInput/processOutput (state lives C++-side); config source-of-truth stays TS-side and is pushed on attach / setInputConfig / setOutputConfig. Preserves ?debug=1 fixed-dt determinism (same dt fed to the WASM calls). EngineApi gains setInputConfig/ setOutputConfig/curveApply/curveApplyBatch. - New types-only modules: pipeline-types.ts (InputConfig/OutputConfig + defaults + wire int mappers) and curve-catalog.ts (CurveName + name→id). types.ts declares the pipeline/curve C ABI. engine barrel updated. - DELETED src/engine/{input-pipeline,output-pipeline,curves}.ts. Tests (P4.4 gate — recorded-gesture regression): - pipeline-golden.test.ts now loads the built WASM (indirect-eval shim, tests/wasm-load.ts) and drives the frozen gesture/output fixtures through the C++ chains, honouring the per-event dt clock contract. Tolerance 1e-5 (non-momentum drift <5e-7). The 3 momentum configs carry 1e-2: proven-inherent f32 drift (a byte-faithful f32 port of the exact original algorithm matches the WASM to <6e-8 while both diverge from the f64 capture by ~7-9e-3), NOT a core bug. - curves-golden.json: linear/square/sqrt/centered_power kept as the original f64 captures (C++ matches within <3e-8); exp/log/sigmoid/cubic RE-BASELINED from the WASM (deliberate switch to firmware-exact k=1 exp/log, slope-6 sigmoid, true cubic x^3). Provenance recorded in-file. - _generate.ts rebuilt as the WASM curve re-baseline tool; pipeline-golden-lib trimmed to pure data builders. Docs: fixtures/README.md + manifold/ONBOARDING.md updated. Gates: typecheck, bun test (9), vite build, playwright e2e (27) all green.
2026-07-18 12:21:35 +02:00
0.0045645227655768394,
0.009164774790406227,
0.013801172375679016,
0.018473923206329346,
0.0231833066791296,
0.02792966552078724,
0.032713212072849274,
0.03753429278731346,
0.04239318147301674,
0.04729015752673149,
0.05222557112574577,
0.05719969794154167,
0.062212809920310974,
0.06726519018411636,
0.07235725969076157,
0.07748928666114807,
0.08266155421733856,
0.0878744050860405,
0.09312811493873596,
0.09842297434806824,
0.10375945270061493,
0.10913769900798798,
0.11455819755792618,
0.12002122402191162,
0.1255270540714264,
0.13107603788375854,
0.1366685926914215,
0.14230498671531677,
0.14798565208911896,
0.15371078252792358,
0.15948086977005005,
0.16529618203639984,
0.1711570918560028,
0.17706398665905,
0.18301722407341003,
0.1890171617269516,
0.19506414234638214,
0.2011585533618927,
0.20730078220367432,
0.21349115669727325,
0.21973009407520294,
0.22601795196533203,
0.23235511779785156,
0.23874196410179138,
0.2451789826154709,
0.25166642665863037,
0.25820478796958923,
0.2647944390773773,
0.2714356780052185,
0.27812910079956055,
0.2848750054836273,
0.29167380928993225,
0.29852595925331116,
0.3054318130016327,
0.31239187717437744,
0.3194064497947693,
0.3264760971069336,
0.333601176738739,
0.34078213572502136,
0.34801939129829407,
0.3553134799003601,
0.36266475915908813,
0.3700736463069916,
0.377540647983551,
0.3850662410259247,
0.39265090227127075,
0.4002949893474579,
0.40799903869628906,
0.4157634973526001,
0.4235888719558716,
0.43147557973861694,
0.4394242465496063,
0.4474351406097412,
0.4555089771747589,
0.4636460840702057,
0.4718469977378845,
0.480112224817276,
0.48844224214553833,
0.49683770537376404,
0.505298912525177,
0.5138265490531921,
0.5224210619926453,
0.5310829281806946,
0.5398127436637878,
0.5486111044883728,
0.5574783682823181,
0.5664152503013611,
0.5754221677780151,
0.5844998359680176,
0.5936485528945923,
0.6028690338134766,
0.6121619343757629,
0.6215277314186096,
0.6309669017791748,
0.6404801607131958,
0.6500680446624756,
0.6597310304641724,
0.6694698929786682,
0.6792850494384766,
0.6891772747039795,
0.6991470456123352,
0.7091950178146362,
0.7193218469619751,
0.7295280694961548,
0.7398143410682678,
0.7501811981201172,
0.7606294751167297,
0.7711597084999084,
0.7817724347114563,
0.7924684286117554,
0.8032483458518982,
0.8141127824783325,
0.8250624537467957,
0.8360981345176697,
0.8472200632095337,
0.858429491519928,
0.8697266578674316,
0.8811125755310059,
0.8925876617431641,
0.9041528105735779,
0.9158087372779846,
0.927556037902832,
0.9393953680992126,
0.9513276815414429,
0.9633536338806152,
0.9754738211631775,
0.9876890182495117,
0.9999999403953552
],
"log": [
0,
feat(manifold)!: route input/output pipelines + curves through the WASM core (P4.3/P4.4) One-core-engine P4.3/P4.4: the input/output pipeline processing and the curve catalog now live in the C++/WASM core (nisps/pipeline/*, nisps/core/math.hpp). The TS ports are deleted and the browser drives the WASM chains. Engine: - WasmIML owns a nisps_pipeline_create handle + bridge buffers and exposes setInputConfig (TS InputConfig → 15-float wire), processInput, resetInput, setOutputConfig (Infinity slew → 0), setOutputFreezeMask, processOutput (in place), resetOutput, curveApply, curveApplyBatch (chunked). Handle + buffers created in init_, freed in dispose, output-sized buffers realloc'd on reshape. - Spine routes setInputs through iml.processInput/processOutput (state lives C++-side); config source-of-truth stays TS-side and is pushed on attach / setInputConfig / setOutputConfig. Preserves ?debug=1 fixed-dt determinism (same dt fed to the WASM calls). EngineApi gains setInputConfig/ setOutputConfig/curveApply/curveApplyBatch. - New types-only modules: pipeline-types.ts (InputConfig/OutputConfig + defaults + wire int mappers) and curve-catalog.ts (CurveName + name→id). types.ts declares the pipeline/curve C ABI. engine barrel updated. - DELETED src/engine/{input-pipeline,output-pipeline,curves}.ts. Tests (P4.4 gate — recorded-gesture regression): - pipeline-golden.test.ts now loads the built WASM (indirect-eval shim, tests/wasm-load.ts) and drives the frozen gesture/output fixtures through the C++ chains, honouring the per-event dt clock contract. Tolerance 1e-5 (non-momentum drift <5e-7). The 3 momentum configs carry 1e-2: proven-inherent f32 drift (a byte-faithful f32 port of the exact original algorithm matches the WASM to <6e-8 while both diverge from the f64 capture by ~7-9e-3), NOT a core bug. - curves-golden.json: linear/square/sqrt/centered_power kept as the original f64 captures (C++ matches within <3e-8); exp/log/sigmoid/cubic RE-BASELINED from the WASM (deliberate switch to firmware-exact k=1 exp/log, slope-6 sigmoid, true cubic x^3). Provenance recorded in-file. - _generate.ts rebuilt as the WASM curve re-baseline tool; pipeline-golden-lib trimmed to pure data builders. Docs: fixtures/README.md + manifold/ONBOARDING.md updated. Gates: typecheck, bun test (9), vite build, playwright e2e (27) all green.
2026-07-18 12:21:35 +02:00
0.013334735296666622,
0.026494108140468597,
0.039482444524765015,
0.05230424553155899,
0.06496383994817734,
0.07746505737304688,
0.08981192111968994,
0.10200830549001694,
0.11405762284994125,
0.1259634792804718,
0.13772925734519958,
0.14935830235481262,
0.1608535796403885,
0.1722182035446167,
0.183455228805542,
0.19456729292869568,
0.2055572271347046,
0.2164277881383896,
0.2271813452243805,
0.23782050609588623,
0.24834775924682617,
0.25876525044441223,
0.26907533407211304,
0.27928030490875244,
0.28938207030296326,
0.2993828356266022,
0.30928462743759155,
0.31908929347991943,
0.32879874110221863,
0.33841487765312195,
0.3479393720626831,
0.35737401247024536,
0.3667205274105072,
0.3759804368019104,
0.3851553797721863,
0.3942469656467438,
0.4032565951347351,
0.41218575835227966,
0.4210359752178192,
0.42980846762657166,
0.4385046660900116,
0.44712597131729126,
0.4556735157966614,
0.4641486406326294,
0.4725525975227356,
0.4808863699436188,
0.48915138840675354,
0.4973486661911011,
0.5054791569709778,
0.5135442614555359,
0.5215447545051575,
0.5294816493988037,
0.5373561978340149,
0.5451692342758179,
0.5529215335845947,
0.5606143474578857,
0.5682483911514282,
0.575824499130249,
0.5833438038825989,
0.5908069014549255,
0.5982146859169006,
0.6055680513381958,
0.6128677129745483,
0.6201145052909851,
0.6273091435432434,
0.6344524025917053,
0.6415449380874634,
0.6485876441001892,
0.655580997467041,
0.6625257730484009,
0.6694227457046509,
0.6762723922729492,
0.6830754280090332,
0.6898325681686401,
0.696544349193573,
0.70321124792099,
0.7098341584205627,
0.7164134979248047,
0.7229496836662292,
0.7294435501098633,
0.7358955144882202,
0.7423059940338135,
0.7486757636070251,
0.7550051808357239,
0.7612947225570679,
0.7675450444221497,
0.7737565636634827,
0.7799296379089355,
0.7860649228096008,
0.7921627759933472,
0.798223614692688,
0.8042479157447815,
0.8102363348007202,
0.8161889314651489,
0.8221062421798706,
0.8279890418052673,
0.8338371515274048,
0.8396512866020203,
0.8454320430755615,
0.8511793613433838,
0.85689377784729,
0.8625760078430176,
0.8682258725166321,
0.8738440275192261,
0.8794310092926025,
0.8849866986274719,
0.8905117511749268,
0.8960065841674805,
0.9014712572097778,
0.9069061875343323,
0.9123119115829468,
0.9176884293556213,
0.9230361580848694,
0.9283556342124939,
0.9336467981338501,
0.9389100670814514,
0.944145917892456,
0.9493544697761536,
0.954535961151123,
0.9596908688545227,
0.9648193120956421,
0.9699214696884155,
0.9749978184700012,
0.9800485372543335,
0.9850738048553467,
0.9900740385055542,
0.9950493574142456,
0.9999999403953552
],
"square": [
0,
0.00006103515625,
0.000244140625,
0.00054931640625,
0.0009765625,
0.00152587890625,
0.002197265625,
0.00299072265625,
0.00390625,
0.00494384765625,
0.006103515625,
0.00738525390625,
0.0087890625,
0.01031494140625,
0.011962890625,
0.01373291015625,
0.015625,
0.01763916015625,
0.019775390625,
0.02203369140625,
0.0244140625,
0.02691650390625,
0.029541015625,
0.03228759765625,
0.03515625,
0.03814697265625,
0.041259765625,
0.04449462890625,
0.0478515625,
0.05133056640625,
0.054931640625,
0.05865478515625,
0.0625,
0.06646728515625,
0.070556640625,
0.07476806640625,
0.0791015625,
0.08355712890625,
0.088134765625,
0.09283447265625,
0.09765625,
0.10260009765625,
0.107666015625,
0.11285400390625,
0.1181640625,
0.12359619140625,
0.129150390625,
0.13482666015625,
0.140625,
0.14654541015625,
0.152587890625,
0.15875244140625,
0.1650390625,
0.17144775390625,
0.177978515625,
0.18463134765625,
0.19140625,
0.19830322265625,
0.205322265625,
0.21246337890625,
0.2197265625,
0.22711181640625,
0.234619140625,
0.24224853515625,
0.25,
0.25787353515625,
0.265869140625,
0.27398681640625,
0.2822265625,
0.29058837890625,
0.299072265625,
0.30767822265625,
0.31640625,
0.32525634765625,
0.334228515625,
0.34332275390625,
0.3525390625,
0.36187744140625,
0.371337890625,
0.38092041015625,
0.390625,
0.40045166015625,
0.410400390625,
0.42047119140625,
0.4306640625,
0.44097900390625,
0.451416015625,
0.46197509765625,
0.47265625,
0.48345947265625,
0.494384765625,
0.50543212890625,
0.5166015625,
0.52789306640625,
0.539306640625,
0.55084228515625,
0.5625,
0.57427978515625,
0.586181640625,
0.59820556640625,
0.6103515625,
0.62261962890625,
0.635009765625,
0.64752197265625,
0.66015625,
0.67291259765625,
0.685791015625,
0.69879150390625,
0.7119140625,
0.72515869140625,
0.738525390625,
0.75201416015625,
0.765625,
0.77935791015625,
0.793212890625,
0.80718994140625,
0.8212890625,
0.83551025390625,
0.849853515625,
0.86431884765625,
0.87890625,
0.89361572265625,
0.908447265625,
0.92340087890625,
0.9384765625,
0.95367431640625,
0.968994140625,
0.98443603515625,
1
],
"sqrt": [
0,
0.08838834764831845,
0.125,
0.15309310892394862,
0.1767766952966369,
0.19764235376052372,
0.21650635094610965,
0.23385358667337133,
0.25,
0.2651650429449553,
0.2795084971874737,
0.29315098498896436,
0.30618621784789724,
0.31868871959954903,
0.33071891388307384,
0.3423265984407288,
0.3535533905932738,
0.3644344934278313,
0.375,
0.385275875185561,
0.39528470752104744,
0.4050462936504913,
0.414578098794425,
0.42389562394532926,
0.4330127018922193,
0.4419417382415922,
0.45069390943299864,
0.4592793267718459,
0.46770717334674267,
0.4759858191164943,
0.4841229182759271,
0.4921254921257382,
0.5,
0.5077524002897476,
0.5153882032022076,
0.5229125165837972,
0.5303300858899106,
0.5376453291901642,
0.5448623679425842,
0.5519850541454905,
0.5590169943749475,
0.5659615711335886,
0.57282196186948,
0.5796011559684815,
0.5863019699779287,
0.5929270612815711,
0.5994789404140899,
0.6059599821770412,
0.6123724356957945,
0.6187184335382291,
0.625,
0.6312190586476298,
0.6373774391990981,
0.6434768838116876,
0.649519052838329,
0.6555055301063447,
0.6614378277661477,
0.667317390751957,
0.673145600891813,
0.6789237807000135,
0.6846531968814576,
0.6903350635742038,
0.6959705453537527,
0.701560760020114,
0.7071067811865476,
0.7126096406869612,
0.7180703308172536,
0.7234898064243891,
0.7288689868556626,
0.7342087577794206,
0.739509972887452,
0.7447734554883115,
0.75,
0.7551903733496608,
0.7603453162872774,
0.7654655446197431,
0.770551750371122,
0.7756046028744286,
0.7806247497997998,
0.7856128181235335,
0.7905694150420949,
0.795495128834866,
0.8003905296791061,
0.8052561704203204,
0.8100925873009825,
0.8149003006503311,
0.81967981553775,
0.8244316223920575,
0.82915619758885,
0.8338540040078959,
0.8385254915624212,
0.8431710977020026,
0.8477912478906585,
0.852386356061616,
0.8569568250501305,
0.8615030470056388,
0.8660254037844386,
0.8705242673240075,
0.875,
0.879452954966893,
0.8838834764831844,
0.8882919002219934,
0.8926785535678563,
0.8970437559004577,
0.9013878188659973,
0.9057110466368399,
0.9100137361600648,
0.9142961773954871,
0.9185586535436918,
0.9228014412645875,
0.9270248108869579,
0.9312290266094587,
0.9354143466934853,
0.9395810236483068,
0.9437293044088437,
0.9478594305064438,
0.9519716382329886,
0.9560661587986472,
0.960143218483576,
0.9642030387838445,
0.9682458365518543,
0.9722718241315028,
0.9762812094883317,
0.9802741963348827,
0.9842509842514764,
0.9882117688026185,
0.9921567416492215,
0.9960860906568267,
1
],
"sigmoid": [
0,
feat(manifold)!: route input/output pipelines + curves through the WASM core (P4.3/P4.4) One-core-engine P4.3/P4.4: the input/output pipeline processing and the curve catalog now live in the C++/WASM core (nisps/pipeline/*, nisps/core/math.hpp). The TS ports are deleted and the browser drives the WASM chains. Engine: - WasmIML owns a nisps_pipeline_create handle + bridge buffers and exposes setInputConfig (TS InputConfig → 15-float wire), processInput, resetInput, setOutputConfig (Infinity slew → 0), setOutputFreezeMask, processOutput (in place), resetOutput, curveApply, curveApplyBatch (chunked). Handle + buffers created in init_, freed in dispose, output-sized buffers realloc'd on reshape. - Spine routes setInputs through iml.processInput/processOutput (state lives C++-side); config source-of-truth stays TS-side and is pushed on attach / setInputConfig / setOutputConfig. Preserves ?debug=1 fixed-dt determinism (same dt fed to the WASM calls). EngineApi gains setInputConfig/ setOutputConfig/curveApply/curveApplyBatch. - New types-only modules: pipeline-types.ts (InputConfig/OutputConfig + defaults + wire int mappers) and curve-catalog.ts (CurveName + name→id). types.ts declares the pipeline/curve C ABI. engine barrel updated. - DELETED src/engine/{input-pipeline,output-pipeline,curves}.ts. Tests (P4.4 gate — recorded-gesture regression): - pipeline-golden.test.ts now loads the built WASM (indirect-eval shim, tests/wasm-load.ts) and drives the frozen gesture/output fixtures through the C++ chains, honouring the per-event dt clock contract. Tolerance 1e-5 (non-momentum drift <5e-7). The 3 momentum configs carry 1e-2: proven-inherent f32 drift (a byte-faithful f32 port of the exact original algorithm matches the WASM to <6e-8 while both diverge from the f64 capture by ~7-9e-3), NOT a core bug. - curves-golden.json: linear/square/sqrt/centered_power kept as the original f64 captures (C++ matches within <3e-8); exp/log/sigmoid/cubic RE-BASELINED from the WASM (deliberate switch to firmware-exact k=1 exp/log, slope-6 sigmoid, true cubic x^3). Provenance recorded in-file. - _generate.ts rebuilt as the WASM curve re-baseline tool; pipeline-golden-lib trimmed to pure data builders. Docs: fixtures/README.md + manifold/ONBOARDING.md updated. Gates: typecheck, bun test (9), vite build, playwright e2e (27) all green.
2026-07-18 12:21:35 +02:00
0.002389832865446806,
0.004882726352661848,
0.007482594344764948,
0.01019341591745615,
0.013019279576838017,
0.015964360907673836,
0.01903291791677475,
0.022229310125112534,
0.02555793896317482,
0.02902330830693245,
0.03262997418642044,
0.03638254478573799,
0.04028568044304848,
0.04434407502412796,
0.04856245964765549,
0.0529455728828907,
0.05749813839793205,
0.06222490221261978,
0.06713052839040756,
0.07221969217061996,
0.0774969831109047,
0.08296690136194229,
0.08863382786512375,
0.0945020467042923,
0.10057570785284042,
0.10685871541500092,
0.11335485428571701,
0.12006764113903046,
0.1270003765821457,
0.1341560035943985,
0.14153724908828735,
0.14914646744728088,
0.1569855660200119,
0.1650562286376953,
0.1733594685792923,
0.18189609050750732,
0.19066624343395233,
0.19966961443424225,
0.2089053839445114,
0.21837210655212402,
0.2280677706003189,
0.23798972368240356,
0.24813468754291534,
0.25849881768226624,
0.26907745003700256,
0.27986544370651245,
0.29085680842399597,
0.30204489827156067,
0.3134225606918335,
0.3249817192554474,
0.3367137908935547,
0.3486095368862152,
0.36065906286239624,
0.3728519380092621,
0.38517698645591736,
0.3976227343082428,
0.410177081823349,
0.4228273928165436,
0.43556085228919983,
0.44836410880088806,
0.4612235724925995,
0.47412538528442383,
0.48705559968948364,
0.5,
feat(manifold)!: route input/output pipelines + curves through the WASM core (P4.3/P4.4) One-core-engine P4.3/P4.4: the input/output pipeline processing and the curve catalog now live in the C++/WASM core (nisps/pipeline/*, nisps/core/math.hpp). The TS ports are deleted and the browser drives the WASM chains. Engine: - WasmIML owns a nisps_pipeline_create handle + bridge buffers and exposes setInputConfig (TS InputConfig → 15-float wire), processInput, resetInput, setOutputConfig (Infinity slew → 0), setOutputFreezeMask, processOutput (in place), resetOutput, curveApply, curveApplyBatch (chunked). Handle + buffers created in init_, freed in dispose, output-sized buffers realloc'd on reshape. - Spine routes setInputs through iml.processInput/processOutput (state lives C++-side); config source-of-truth stays TS-side and is pushed on attach / setInputConfig / setOutputConfig. Preserves ?debug=1 fixed-dt determinism (same dt fed to the WASM calls). EngineApi gains setInputConfig/ setOutputConfig/curveApply/curveApplyBatch. - New types-only modules: pipeline-types.ts (InputConfig/OutputConfig + defaults + wire int mappers) and curve-catalog.ts (CurveName + name→id). types.ts declares the pipeline/curve C ABI. engine barrel updated. - DELETED src/engine/{input-pipeline,output-pipeline,curves}.ts. Tests (P4.4 gate — recorded-gesture regression): - pipeline-golden.test.ts now loads the built WASM (indirect-eval shim, tests/wasm-load.ts) and drives the frozen gesture/output fixtures through the C++ chains, honouring the per-event dt clock contract. Tolerance 1e-5 (non-momentum drift <5e-7). The 3 momentum configs carry 1e-2: proven-inherent f32 drift (a byte-faithful f32 port of the exact original algorithm matches the WASM to <6e-8 while both diverge from the f64 capture by ~7-9e-3), NOT a core bug. - curves-golden.json: linear/square/sqrt/centered_power kept as the original f64 captures (C++ matches within <3e-8); exp/log/sigmoid/cubic RE-BASELINED from the WASM (deliberate switch to firmware-exact k=1 exp/log, slope-6 sigmoid, true cubic x^3). Provenance recorded in-file. - _generate.ts rebuilt as the WASM curve re-baseline tool; pipeline-golden-lib trimmed to pure data builders. Docs: fixtures/README.md + manifold/ONBOARDING.md updated. Gates: typecheck, bun test (9), vite build, playwright e2e (27) all green.
2026-07-18 12:21:35 +02:00
0.5129444003105164,
0.525874674320221,
0.5387764573097229,
0.5516359210014343,
0.5644391775131226,
0.577172577381134,
0.5898229479789734,
0.6023772954940796,
0.6148229241371155,
0.6271480917930603,
0.6393409371376038,
0.6513904333114624,
0.6632862091064453,
0.675018310546875,
0.6865774989128113,
0.6979550719261169,
0.7091432213783264,
0.7201346158981323,
0.730922520160675,
0.7415011525154114,
0.7518652677536011,
0.7620103359222412,
0.7719322443008423,
0.781627893447876,
0.7910945415496826,
0.8003303408622742,
0.8093337416648865,
0.8181039094924927,
0.8266404867172241,
0.8349437713623047,
0.8430143594741821,
0.8508535027503967,
0.8584626913070679,
0.8658440113067627,
0.8729996085166931,
0.8799324035644531,
0.8866451382637024,
0.8931413292884827,
0.8994243144989014,
0.9054979085922241,
0.9113661646842957,
0.9170331358909607,
0.9225029945373535,
0.927780270576477,
0.9328694343566895,
0.9377751350402832,
0.9425018429756165,
0.947054386138916,
0.9514375925064087,
0.9556559324264526,
0.9597142934799194,
0.9636175036430359,
0.9673700332641602,
0.9709766507148743,
0.9744420647621155,
0.9777706265449524,
0.9809670448303223,
0.9840356111526489,
0.986980676651001,
0.989806592464447,
0.9925172924995422,
0.9951173067092896,
0.9976102113723755,
1
],
"cubic": [
0,
feat(manifold)!: route input/output pipelines + curves through the WASM core (P4.3/P4.4) One-core-engine P4.3/P4.4: the input/output pipeline processing and the curve catalog now live in the C++/WASM core (nisps/pipeline/*, nisps/core/math.hpp). The TS ports are deleted and the browser drives the WASM chains. Engine: - WasmIML owns a nisps_pipeline_create handle + bridge buffers and exposes setInputConfig (TS InputConfig → 15-float wire), processInput, resetInput, setOutputConfig (Infinity slew → 0), setOutputFreezeMask, processOutput (in place), resetOutput, curveApply, curveApplyBatch (chunked). Handle + buffers created in init_, freed in dispose, output-sized buffers realloc'd on reshape. - Spine routes setInputs through iml.processInput/processOutput (state lives C++-side); config source-of-truth stays TS-side and is pushed on attach / setInputConfig / setOutputConfig. Preserves ?debug=1 fixed-dt determinism (same dt fed to the WASM calls). EngineApi gains setInputConfig/ setOutputConfig/curveApply/curveApplyBatch. - New types-only modules: pipeline-types.ts (InputConfig/OutputConfig + defaults + wire int mappers) and curve-catalog.ts (CurveName + name→id). types.ts declares the pipeline/curve C ABI. engine barrel updated. - DELETED src/engine/{input-pipeline,output-pipeline,curves}.ts. Tests (P4.4 gate — recorded-gesture regression): - pipeline-golden.test.ts now loads the built WASM (indirect-eval shim, tests/wasm-load.ts) and drives the frozen gesture/output fixtures through the C++ chains, honouring the per-event dt clock contract. Tolerance 1e-5 (non-momentum drift <5e-7). The 3 momentum configs carry 1e-2: proven-inherent f32 drift (a byte-faithful f32 port of the exact original algorithm matches the WASM to <6e-8 while both diverge from the f64 capture by ~7-9e-3), NOT a core bug. - curves-golden.json: linear/square/sqrt/centered_power kept as the original f64 captures (C++ matches within <3e-8); exp/log/sigmoid/cubic RE-BASELINED from the WASM (deliberate switch to firmware-exact k=1 exp/log, slope-6 sigmoid, true cubic x^3). Provenance recorded in-file. - _generate.ts rebuilt as the WASM curve re-baseline tool; pipeline-golden-lib trimmed to pure data builders. Docs: fixtures/README.md + manifold/ONBOARDING.md updated. Gates: typecheck, bun test (9), vite build, playwright e2e (27) all green.
2026-07-18 12:21:35 +02:00
4.76837158203125e-7,
0.000003814697265625,
0.000012874603271484375,
0.000030517578125,
0.000059604644775390625,
0.000102996826171875,
0.00016355514526367188,
0.000244140625,
0.0003476142883300781,
0.000476837158203125,
0.0006346702575683594,
0.000823974609375,
0.0010476112365722656,
0.001308441162109375,
0.0016093254089355469,
0.001953125,
0.002342700958251953,
0.002780914306640625,
0.0032706260681152344,
0.003814697265625,
0.004415988922119141,
0.005077362060546875,
0.005801677703857422,
0.006591796875,
0.007450580596923828,
0.008380889892578125,
0.00938558578491211,
0.010467529296875,
0.011629581451416016,
0.012874603271484375,
0.014205455780029297,
0.015625,
0.017136096954345703,
0.018741607666015625,
0.020444393157958984,
0.022247314453125,
0.02415323257446289,
0.026165008544921875,
0.028285503387451172,
0.030517578125,
0.03286409378051758,
0.035327911376953125,
0.03791189193725586,
0.040618896484375,
0.043451786041259766,
0.046413421630859375,
0.04950666427612305,
0.052734375,
0.05609941482543945,
0.059604644775390625,
0.06325292587280273,
0.067047119140625,
0.07099008560180664,
0.07508468627929688,
0.07933378219604492,
0.083740234375,
0.08830690383911133,
0.09303665161132812,
0.09793233871459961,
0.102996826171875,
0.10823297500610352,
0.11364364624023438,
0.1192317008972168,
0.125,
0.1309514045715332,
0.13708877563476562,
0.14341497421264648,
0.149932861328125,
0.1566452980041504,
0.16355514526367188,
0.17066526412963867,
0.177978515625,
0.18549776077270508,
0.19322586059570312,
0.20116567611694336,
0.209320068359375,
0.21769189834594727,
0.22628402709960938,
0.23509931564331055,
0.244140625,
0.25341081619262695,
0.2629127502441406,
0.27264928817749023,
0.282623291015625,
0.29283761978149414,
0.3032951354980469,
0.3139986991882324,
0.324951171875,
0.33615541458129883,
0.3476142883300781,
0.3593306541442871,
0.371307373046875,
0.383547306060791,
0.3960533142089844,
0.4088282585144043,
0.421875,
0.4351963996887207,
0.4487953186035156,
0.462674617767334,
0.476837158203125,
0.4912858009338379,
0.5060234069824219,
0.5210528373718262,
0.536376953125,
0.5519986152648926,
0.5679206848144531,
0.5841460227966309,
0.600677490234375,
0.6175179481506348,
0.6346702575683594,
0.652137279510498,
0.669921875,
0.6880269050598145,
0.7064552307128906,
0.7252097129821777,
0.744293212890625,
0.7637085914611816,
0.7834587097167969,
0.8035464286804199,
0.823974609375,
0.8447461128234863,
0.8658638000488281,
0.8873305320739746,
0.909149169921875,
0.9313225746154785,
0.9538536071777344,
0.9767451286315918,
1
],
"centered_power": [
0,
0.0078125,
0.015625,
0.0234375,
0.03125,
0.0390625,
0.046875,
0.0546875,
0.0625,
0.0703125,
0.078125,
0.0859375,
0.09375,
0.1015625,
0.109375,
0.1171875,
0.125,
0.1328125,
0.140625,
0.1484375,
0.15625,
0.1640625,
0.171875,
0.1796875,
0.1875,
0.1953125,
0.203125,
0.2109375,
0.21875,
0.2265625,
0.234375,
0.2421875,
0.25,
0.2578125,
0.265625,
0.2734375,
0.28125,
0.2890625,
0.296875,
0.3046875,
0.3125,
0.3203125,
0.328125,
0.3359375,
0.34375,
0.3515625,
0.359375,
0.3671875,
0.375,
0.3828125,
0.390625,
0.3984375,
0.40625,
0.4140625,
0.421875,
0.4296875,
0.4375,
0.4453125,
0.453125,
0.4609375,
0.46875,
0.4765625,
0.484375,
0.4921875,
0.5,
0.5078125,
0.515625,
0.5234375,
0.53125,
0.5390625,
0.546875,
0.5546875,
0.5625,
0.5703125,
0.578125,
0.5859375,
0.59375,
0.6015625,
0.609375,
0.6171875,
0.625,
0.6328125,
0.640625,
0.6484375,
0.65625,
0.6640625,
0.671875,
0.6796875,
0.6875,
0.6953125,
0.703125,
0.7109375,
0.71875,
0.7265625,
0.734375,
0.7421875,
0.75,
0.7578125,
0.765625,
0.7734375,
0.78125,
0.7890625,
0.796875,
0.8046875,
0.8125,
0.8203125,
0.828125,
0.8359375,
0.84375,
0.8515625,
0.859375,
0.8671875,
0.875,
0.8828125,
0.890625,
0.8984375,
0.90625,
0.9140625,
0.921875,
0.9296875,
0.9375,
0.9453125,
0.953125,
0.9609375,
0.96875,
0.9765625,
0.984375,
0.9921875,
1
]
feat(manifold)!: route input/output pipelines + curves through the WASM core (P4.3/P4.4) One-core-engine P4.3/P4.4: the input/output pipeline processing and the curve catalog now live in the C++/WASM core (nisps/pipeline/*, nisps/core/math.hpp). The TS ports are deleted and the browser drives the WASM chains. Engine: - WasmIML owns a nisps_pipeline_create handle + bridge buffers and exposes setInputConfig (TS InputConfig → 15-float wire), processInput, resetInput, setOutputConfig (Infinity slew → 0), setOutputFreezeMask, processOutput (in place), resetOutput, curveApply, curveApplyBatch (chunked). Handle + buffers created in init_, freed in dispose, output-sized buffers realloc'd on reshape. - Spine routes setInputs through iml.processInput/processOutput (state lives C++-side); config source-of-truth stays TS-side and is pushed on attach / setInputConfig / setOutputConfig. Preserves ?debug=1 fixed-dt determinism (same dt fed to the WASM calls). EngineApi gains setInputConfig/ setOutputConfig/curveApply/curveApplyBatch. - New types-only modules: pipeline-types.ts (InputConfig/OutputConfig + defaults + wire int mappers) and curve-catalog.ts (CurveName + name→id). types.ts declares the pipeline/curve C ABI. engine barrel updated. - DELETED src/engine/{input-pipeline,output-pipeline,curves}.ts. Tests (P4.4 gate — recorded-gesture regression): - pipeline-golden.test.ts now loads the built WASM (indirect-eval shim, tests/wasm-load.ts) and drives the frozen gesture/output fixtures through the C++ chains, honouring the per-event dt clock contract. Tolerance 1e-5 (non-momentum drift <5e-7). The 3 momentum configs carry 1e-2: proven-inherent f32 drift (a byte-faithful f32 port of the exact original algorithm matches the WASM to <6e-8 while both diverge from the f64 capture by ~7-9e-3), NOT a core bug. - curves-golden.json: linear/square/sqrt/centered_power kept as the original f64 captures (C++ matches within <3e-8); exp/log/sigmoid/cubic RE-BASELINED from the WASM (deliberate switch to firmware-exact k=1 exp/log, slope-6 sigmoid, true cubic x^3). Provenance recorded in-file. - _generate.ts rebuilt as the WASM curve re-baseline tool; pipeline-golden-lib trimmed to pure data builders. Docs: fixtures/README.md + manifold/ONBOARDING.md updated. Gates: typecheck, bun test (9), vite build, playwright e2e (27) all green.
2026-07-18 12:21:35 +02:00
},
"provenance": {
"unchanged": {
"curves": [
"linear",
"square",
"sqrt",
"centered_power"
],
"source": "TS f64 capture 2026-07-13; C++ core matches within 1e-5 (no behaviour change)."
},
"rebaselined": {
"curves": [
"exp",
"log",
"sigmoid",
"cubic"
],
"date": "2026-07-18",
"source": "nisps/core/math.hpp via nisps_curve_apply (WASM). The old TS curves.ts used k=4 exp/log, slope-8 sigmoid, smoothstep cubic; the canonical catalog uses k=1-normalised exp/log, slope-6 sigmoid, true cubic x^3. The browser now adopts the firmware-exact behaviour."
}
}
}