{ "Slug": "ocaml", "Language": "OCaml", "Status": "LIVE", "URL": "https://todo-ocaml-2.bfj.oncarlos.com", "Version": "d803224", "Stack": "", "Source": "https://amadan.net/carlos/todomvc-bakeoff?ref=main\u0026path=apps/ocaml", "BehaviourJSOn": { "Passed": 35, "Failed": 0, "Skipped": 0 }, "BehaviourJSOff": { "Passed": 32, "Failed": 0, "Skipped": 3 }, "TTFBEmpty": { "N": 30, "P50": 51.659, "P95": 58.82, "P99": 60.574, "Min": 45.08, "Max": 60.574 }, "TTFB50": { "N": 30, "P50": 52.9, "P95": 75.3, "P99": 125.31, "Min": 41.961, "Max": 125.31 }, "Wake": [ 1183.677, 1296.171, 1285.662 ], "Load": [ { "Scenario": "read", "Concurrency": 1, "RPS": 76.49275580710622, "P50Ms": 12.132339, "P95Ms": 17.773377, "P99Ms": 21.198332, "ErrorRate": 0, "Status": { "200": 764 } }, { "Scenario": "read", "Concurrency": 2, "RPS": 135.78443915758632, "P50Ms": 14.967083, "P95Ms": 19.172369000000003, "P99Ms": 23.660912999999997, "ErrorRate": 0, "Status": { "200": 1356 } }, { "Scenario": "read", "Concurrency": 4, "RPS": 256.95806647352026, "P50Ms": 15.260728, "P95Ms": 20.263771, "P99Ms": 26.014457, "ErrorRate": 0, "Status": { "200": 2566 } }, { "Scenario": "read", "Concurrency": 8, "RPS": 492.85122625980637, "P50Ms": 15.869159000000002, "P95Ms": 22.015221, "P99Ms": 26.571461, "ErrorRate": 0, "Status": { "200": 4921 } }, { "Scenario": "read", "Concurrency": 16, "RPS": 828.1460486433324, "P50Ms": 17.966468, "P95Ms": 29.617344, "P99Ms": 43.507917, "ErrorRate": 0, "Status": { "200": 8267 } }, { "Scenario": "read", "Concurrency": 32, "RPS": 789.7537081554362, "P50Ms": 33.62263, "P95Ms": 83.737086, "P99Ms": 130.308392, "ErrorRate": 0, "Status": { "200": 7867 } }, { "Scenario": "read", "Concurrency": 64, "RPS": 924.1786622729835, "P50Ms": 66.602672, "P95Ms": 114.55368200000001, "P99Ms": 146.556476, "ErrorRate": 0, "Status": { "200": 9179 } }, { "Scenario": "read", "Concurrency": 128, "RPS": 991.611349175018, "P50Ms": 126.64852600000002, "P95Ms": 207.557649, "P99Ms": 270.630206, "ErrorRate": 0, "Status": { "200": 9791 } }, { "Scenario": "read", "Concurrency": 256, "RPS": 8969.860389280351, "P50Ms": 19.927958999999998, "P95Ms": 82.329991, "P99Ms": 127.97465899999999, "ErrorRate": 0.8957115554413063, "Status": { "200": 9331, "503": 80142 } }, { "Scenario": "toggle", "Concurrency": 1, "RPS": 31.888753656126454, "P50Ms": 30.738936000000002, "P95Ms": 34.59509, "P99Ms": 37.999565, "ErrorRate": 0, "Status": { "303": 318 } }, { "Scenario": "toggle", "Concurrency": 2, "RPS": 63.09187247344204, "P50Ms": 30.806395000000002, "P95Ms": 36.620787, "P99Ms": 43.047184, "ErrorRate": 0, "Status": { "303": 629 } }, { "Scenario": "toggle", "Concurrency": 4, "RPS": 124.08132513395665, "P50Ms": 30.81785, "P95Ms": 37.607333, "P99Ms": 61.74071, "ErrorRate": 0, "Status": { "303": 1238 } }, { "Scenario": "toggle", "Concurrency": 8, "RPS": 237.36710293715328, "P50Ms": 33.29061299999999, "P95Ms": 38.181529999999995, "P99Ms": 42.025779, "ErrorRate": 0, "Status": { "303": 2366 } }, { "Scenario": "toggle", "Concurrency": 16, "RPS": 460.81160803896915, "P50Ms": 34.166177999999995, "P95Ms": 39.529419000000004, "P99Ms": 52.621012, "ErrorRate": 0, "Status": { "303": 4593 } }, { "Scenario": "toggle", "Concurrency": 32, "RPS": 887.0204034015048, "P50Ms": 34.534487000000006, "P95Ms": 42.144569, "P99Ms": 79.96372, "ErrorRate": 0, "Status": { "303": 8839 } }, { "Scenario": "toggle", "Concurrency": 64, "RPS": 1057.6661271736937, "P50Ms": 44.443495999999996, "P95Ms": 140.51767800000002, "P99Ms": 177.552036, "ErrorRate": 0, "Status": { "303": 10515 } }, { "Scenario": "toggle", "Concurrency": 128, "RPS": 1362.4340145959552, "P50Ms": 62.144081, "P95Ms": 254.80678899999998, "P99Ms": 412.619422, "ErrorRate": 0.2856507889473294, "Status": { "303": 9643, "503": 3856 } }, { "Scenario": "read-after", "Concurrency": 1, "RPS": 27.69546377660531, "P50Ms": 36.003156000000004, "P95Ms": 40.474782, "P99Ms": 61.204169, "ErrorRate": 0, "Status": { "200": 276 } }, { "Scenario": "read-after", "Concurrency": 2, "RPS": 52.19290268383009, "P50Ms": 37.93591, "P95Ms": 42.595862999999994, "P99Ms": 48.882318, "ErrorRate": 0, "Status": { "200": 520 } }, { "Scenario": "read-after", "Concurrency": 4, "RPS": 108.48845981130873, "P50Ms": 36.692753, "P95Ms": 41.509272, "P99Ms": 45.983484, "ErrorRate": 0, "Status": { "200": 1081 } }, { "Scenario": "read-after", "Concurrency": 8, "RPS": 213.48600927977625, "P50Ms": 36.586635, "P95Ms": 42.996452999999995, "P99Ms": 72.03171499999999, "ErrorRate": 0, "Status": { "200": 2127 } }, { "Scenario": "read-after", "Concurrency": 16, "RPS": 413.3553858724856, "P50Ms": 37.597107, "P95Ms": 45.717586999999995, "P99Ms": 61.104552999999996, "ErrorRate": 0, "Status": { "200": 4120 } }, { "Scenario": "read-after", "Concurrency": 32, "RPS": 742.6962395042211, "P50Ms": 40.184226, "P95Ms": 58.782751000000005, "P99Ms": 82.288609, "ErrorRate": 0, "Status": { "200": 7397 } }, { "Scenario": "read-after", "Concurrency": 64, "RPS": 713.3670865858147, "P50Ms": 69.819616, "P95Ms": 196.194665, "P99Ms": 332.292778, "ErrorRate": 0, "Status": { "200": 7071 } }, { "Scenario": "read-after", "Concurrency": 128, "RPS": 3047.9283526262448, "P50Ms": 21.520699, "P95Ms": 109.87831000000001, "P99Ms": 163.49684100000002, "ErrorRate": 0.6972561678579663, "Status": { "200": 9191, "503": 21168 } } ], "Weight": { "HTMLBytes": 42587, "JSBytes": 3685 }, "Memory": { "IdleKB": 10908, "PeakKB": 17388, "AfterKB": 17388 }, "Code": { "Server": 597, "Templates": 0, "JS": 100, "Tests": 206, "Deps": 9 }, "Build": { "ColdSeconds": 1097.444331791, "WarmSeconds": 9.975881839, "EditSeconds": 3.303059353, "Bytes": 8235224, "Host": "DOCS-T1", "ColdRuns": 1, "Runs": 3 }, "TokensBuild": { "Input": 202, "Output": 83667, "CacheRead": 12568981, "CacheWrite": 175533, "Turns": 103, "Seconds": 1110.2859999999998, "CostUSD": 5.5922082 }, "TokensFix": { "Input": 62, "Output": 23981, "CacheRead": 6448874, "CacheWrite": 35642, "Turns": 31, "Seconds": 364.49199999999996, "CostUSD": 2.0547788000000002 }, "TokensSecurity": { "Input": 0, "Output": 0, "CacheRead": 0, "CacheWrite": 0, "Turns": 0, "Seconds": 0, "CostUSD": 0 }, "TokensReview": { "Input": 794733, "Output": 4130, "CacheRead": 689664, "CacheWrite": 0, "Turns": 2, "Seconds": 0, "CostUSD": 0 }, "Readability": { "Naming": 4, "Structure": 4, "Traceability": 5, "Errors": 4, "Comments": 5, "Overall": 8, "Notes": "Strongest: a toggle is trivially traceable (handle → action_of_path → post → perform → Store.toggle → View.fragment or 303), helped by App being server-independent and each module having one clear job. Comments are nearly all 'why' (Budget rationale, cookie age, migration rule, CSP hash, JS render invariants) with no noise. Weakest: handle's `filter p \u003c\u003e None ... Option.get (filter p)` double evaluation is clunky and hides intent; Store errors surface only as failwith exceptions caught by run_server's generic logger, and user_version's exec result is ignored; main.ml's Budget/connection plumbing and nested try blocks take effort to follow; a few terse names (change, shows, done_, go) need a moment." }, "ReviewFindings": [ "[correctness] `apps/ocaml/static/app.js:14` — Filter navigation can discard queued edits. With a toggle request pending, edit another item and click “Active”: blur queues the save, but the ordinary filter link immediately unloads the page before that save runs. The changed title is lost. Wait for pending mutations before navigating between filters." ], "Notes": null }