{ "Slug": "spinel", "Language": "Spinel", "Status": "LIVE", "URL": "https://todo-spinel-4.bfj.oncarlos.com", "Version": "e344882", "Stack": "", "Source": "https://amadan.net/carlos/todomvc-bakeoff?ref=main\u0026path=apps/spinel", "BehaviourJSOn": { "Passed": 35, "Failed": 0, "Skipped": 0 }, "BehaviourJSOff": { "Passed": 32, "Failed": 0, "Skipped": 3 }, "TTFBEmpty": { "N": 30, "P50": 94.565, "P95": 101.677, "P99": 105.118, "Min": 84.654, "Max": 105.118 }, "TTFB50": { "N": 30, "P50": 92.83, "P95": 103.283, "P99": 108.763, "Min": 82.851, "Max": 108.763 }, "Wake": [ 1248.33, 1353.544, 1285.352 ], "Load": [ { "Scenario": "read", "Concurrency": 1, "RPS": 25.594970301672053, "P50Ms": 38.742631, "P95Ms": 42.993732, "P99Ms": 46.257200999999995, "ErrorRate": 0, "Status": { "200": 255 } }, { "Scenario": "read", "Concurrency": 2, "RPS": 54.99317071708903, "P50Ms": 35.90533, "P95Ms": 41.97235, "P99Ms": 62.428013, "ErrorRate": 0, "Status": { "200": 548 } }, { "Scenario": "read", "Concurrency": 4, "RPS": 247.9686645966048, "P50Ms": 15.490781, "P95Ms": 21.757472, "P99Ms": 29.339324, "ErrorRate": 0, "Status": { "200": 2476 } }, { "Scenario": "read", "Concurrency": 8, "RPS": 445.1923600556087, "P50Ms": 16.816647, "P95Ms": 26.753986, "P99Ms": 36.077849, "ErrorRate": 0, "Status": { "200": 4445 } }, { "Scenario": "read", "Concurrency": 16, "RPS": 656.0083460563341, "P50Ms": 20.694995000000002, "P95Ms": 41.204227, "P99Ms": 64.351545, "ErrorRate": 0, "Status": { "200": 6545 } }, { "Scenario": "read", "Concurrency": 32, "RPS": 627.8284193984191, "P50Ms": 45.189996, "P95Ms": 77.537528, "P99Ms": 170.328653, "ErrorRate": 0, "Status": { "200": 6247 } }, { "Scenario": "read", "Concurrency": 64, "RPS": 721.7061662902305, "P50Ms": 82.34214700000001, "P95Ms": 128.715374, "P99Ms": 230.934482, "ErrorRate": 0, "Status": { "200": 7154 } }, { "Scenario": "read", "Concurrency": 128, "RPS": 2990.4632740577986, "P50Ms": 21.819719000000003, "P95Ms": 128.803908, "P99Ms": 177.15046, "ErrorRate": 0.8045324827933523, "Status": { "200": 5822, "503": 23963 } }, { "Scenario": "toggle", "Concurrency": 1, "RPS": 83.88447238019424, "P50Ms": 9.788593, "P95Ms": 15.403773000000001, "P99Ms": 21.303023, "ErrorRate": 0, "Status": { "303": 838 } }, { "Scenario": "toggle", "Concurrency": 2, "RPS": 179.67660671670595, "P50Ms": 10.722333, "P95Ms": 15.036688, "P99Ms": 17.771734000000002, "ErrorRate": 0, "Status": { "303": 1795 } }, { "Scenario": "toggle", "Concurrency": 4, "RPS": 310.1625328622903, "P50Ms": 12.498603000000001, "P95Ms": 17.47861, "P99Ms": 23.312796, "ErrorRate": 0, "Status": { "303": 3098 } }, { "Scenario": "toggle", "Concurrency": 8, "RPS": 556.9101887089065, "P50Ms": 14.2856, "P95Ms": 18.779223, "P99Ms": 23.257653, "ErrorRate": 0, "Status": { "303": 5562 } }, { "Scenario": "toggle", "Concurrency": 16, "RPS": 3.299356197285095, "P50Ms": 1399.654903, "P95Ms": 1403.356961, "P99Ms": 1403.356961, "ErrorRate": 0, "Status": { "303": 17 } }, { "Scenario": "toggle", "Concurrency": 32, "RPS": 1532.8835689908904, "P50Ms": 15.445893, "P95Ms": 31.467546, "P99Ms": 52.586470000000006, "ErrorRate": 0, "Status": { "303": 15300 } }, { "Scenario": "toggle", "Concurrency": 64, "RPS": 2282.5118850616304, "P50Ms": 20.323867, "P95Ms": 47.209343000000004, "P99Ms": 71.43903999999999, "ErrorRate": 0, "Status": { "303": 22766 } }, { "Scenario": "toggle", "Concurrency": 128, "RPS": 2451.4011261368464, "P50Ms": 38.70759, "P95Ms": 92.036958, "P99Ms": 161.91760299999999, "ErrorRate": 0, "Status": { "303": 24392 } }, { "Scenario": "toggle", "Concurrency": 256, "RPS": 2892.398792397893, "P50Ms": 74.994662, "P95Ms": 152.24756, "P99Ms": 246.057975, "ErrorRate": 0.24245065904177418, "Status": { "303": 21725, "502": 6953 } }, { "Scenario": "read-after", "Concurrency": 1, "RPS": 66.49173397370429, "P50Ms": 12.198212999999999, "P95Ms": 17.754181, "P99Ms": 22.703056, "ErrorRate": 0, "Status": { "200": 664 } }, { "Scenario": "read-after", "Concurrency": 2, "RPS": 139.3728286956172, "P50Ms": 13.792565, "P95Ms": 19.511307, "P99Ms": 24.752534, "ErrorRate": 0, "Status": { "200": 1392 } }, { "Scenario": "read-after", "Concurrency": 4, "RPS": 251.77386594824677, "P50Ms": 15.484064, "P95Ms": 20.537094999999997, "P99Ms": 26.231531999999998, "ErrorRate": 0, "Status": { "200": 2514 } }, { "Scenario": "read-after", "Concurrency": 8, "RPS": 386.1619525826817, "P50Ms": 16.855828, "P95Ms": 26.412496, "P99Ms": 38.507045, "ErrorRate": 0, "Status": { "200": 3854 } }, { "Scenario": "read-after", "Concurrency": 16, "RPS": 584.8175879733568, "P50Ms": 20.718797000000002, "P95Ms": 44.462733, "P99Ms": 63.458346999999996, "ErrorRate": 0, "Status": { "200": 5833 } }, { "Scenario": "read-after", "Concurrency": 32, "RPS": 3.199286737897577, "P50Ms": 0, "P95Ms": 0, "P99Ms": 0, "ErrorRate": 0 }, { "Scenario": "read-after", "Concurrency": 64, "RPS": 662.0611944347767, "P50Ms": 78.303783, "P95Ms": 137.770103, "P99Ms": 247.53055600000002, "ErrorRate": 0, "Status": { "200": 6558 } }, { "Scenario": "read-after", "Concurrency": 128, "RPS": 705.8385464581186, "P50Ms": 148.717762, "P95Ms": 262.54161799999997, "P99Ms": 1461.214874, "ErrorRate": 0, "Status": { "200": 6938 } }, { "Scenario": "read-after", "Concurrency": 256, "RPS": 888.065025131621, "P50Ms": 272.531186, "P95Ms": 438.97776, "P99Ms": 1592.9036810000002, "ErrorRate": 0.20815003473026164, "Status": { "200": 6840, "502": 1798 } } ], "Weight": { "HTMLBytes": 41526, "JSBytes": 2655 }, "Memory": { "IdleKB": 8364, "PeakKB": 13096, "AfterKB": 12132 }, "Code": { "Server": 495, "Templates": 0, "JS": 71, "Tests": 0, "Deps": 2 }, "Build": { "ColdSeconds": 287.12381672, "WarmSeconds": 101.340795406, "EditSeconds": 103.978456017, "Bytes": 8749592, "Host": "DOCS-T1", "ColdRuns": 1, "Runs": 3 }, "TokensBuild": { "Input": 258, "Output": 99309, "CacheRead": 22408692, "CacheWrite": 276287, "Turns": 132, "Seconds": 4631.851, "CostUSD": 8.679246399999998 }, "TokensFix": { "Input": 44, "Output": 20701, "CacheRead": 6777148, "CacheWrite": 31920, "Turns": 22, "Seconds": 565.253, "CostUSD": 2.0249855999999955 }, "TokensSecurity": { "Input": 0, "Output": 0, "CacheRead": 0, "CacheWrite": 0, "Turns": 0, "Seconds": 0, "CostUSD": 0 }, "TokensReview": { "Input": 916819, "Output": 4711, "CacheRead": 797824, "CacheWrite": 0, "Turns": 2, "Seconds": 0, "CostUSD": 0 }, "Readability": { "Naming": 4, "Structure": 4, "Traceability": 5, "Errors": 3, "Comments": 4, "Overall": 7, "Notes": "Strongest: traceability. Each route reads top to bottom: origin check, visitor, path_id, todo_exists, one inline SQL statement, finish_post, render_lists. Comments explain the non-obvious (Spinel subset, single-cursor shim, token-issuance check, BUILD_NOTE). Weakest: errors. Write paths (run_sql, add_todo, rename_todo, record_token) discard DB.step's result, so a failed INSERT or UPDATE silently returns a stale fragment; the JS catch-all reload hides failures too. Lesser points: parallel arrays with a `done` field of ints, generic run_sql with a magic `id \u003e 0` bind rule, layout/page/path_id filed under the Actions divider, and unexplained constants (18 and 19 character limits)." }, "ReviewFindings": [ "[correctness] `apps/spinel/app.rb:475` and `:527` — `strip` only removes ASCII whitespace. A title containing only U+00A0 or U+2003 creates a blank-looking todo, and editing to that value does not delete it. Apply Unicode whitespace trimming before the empty-title check.", "[correctness] `apps/spinel/patches/2-tep-bakeoff.patch:330` — URL decoding turns `%00` into a NUL inside a C string, which is then truncated when copied into Ruby. Posting `title=before%00after` silently stores `before`; editing with `title=%00after` deletes the todo. Preserve decoded string lengths so input cannot silently become a different title or action.", "[spec] `apps/spinel/Makefile:130` — `clean-deps` deletes only the local SQLite and tep artifacts. The arm64 build still links precompiled OpenSSL, zlib and zstd libraries from the shared toolchain root (`scripts/arm64-cc:21`), so the next build does not compile every third-party library from scratch as required. Build those dependencies into the app’s own cache and include them in `clean-deps`." ], "Notes": [ "Its server process exited (status 0) 16 times during the load test, and Carloku restarted it each time; the edge answered 502 in between." ] }