2026-07-13 23:25:31 +02:00
{
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." ,
2026-07-13 23:25:31 +02:00
"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 ,
2026-07-13 23:25:31 +02:00
"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 ,
2026-07-13 23:25:31 +02:00
"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
2026-07-13 23:25:31 +02:00
] ,
"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
2026-07-13 23:25:31 +02:00
] ,
"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 ,
2026-07-13 23:25:31 +02:00
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 ,
2026-07-13 23:25:31 +02:00
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 ,
2026-07-13 23:25:31 +02:00
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."
}
2026-07-13 23:25:31 +02:00
}
}