{ "Slug": "go-rastrillo", "Language": "Go + Rastrillo", "Status": "LIVE", "URL": "https://todo-go-rastrillo-2.bfj.oncarlos.com", "Version": "449d865", "Stack": "", "Source": "https://amadan.net/carlos/todomvc-bakeoff?ref=main\u0026path=apps/go-rastrillo", "BehaviourJSOn": { "Passed": 35, "Failed": 0, "Skipped": 0 }, "BehaviourJSOff": { "Passed": 32, "Failed": 0, "Skipped": 3 }, "TTFBEmpty": { "N": 30, "P50": 56.635, "P95": 67.487, "P99": 67.932, "Min": 46.233, "Max": 67.932 }, "TTFB50": { "N": 30, "P50": 54.058, "P95": 59.506, "P99": 64.063, "Min": 48.03, "Max": 64.063 }, "Wake": [ 1319.839, 1382.91, 1369.422 ], "Load": [ { "Scenario": "read", "Concurrency": 1, "RPS": 66.38935693629935, "P50Ms": 13.830784000000001, "P95Ms": 20.574993, "P99Ms": 27.179045, "ErrorRate": 0, "Status": { "200": 663 } }, { "Scenario": "read", "Concurrency": 2, "RPS": 118.69208552865248, "P50Ms": 16.532695999999998, "P95Ms": 22.722982, "P99Ms": 29.551419999999997, "ErrorRate": 0, "Status": { "200": 1185 } }, { "Scenario": "read", "Concurrency": 4, "RPS": 207.07157605092033, "P50Ms": 17.678483, "P95Ms": 29.174643, "P99Ms": 46.391329, "ErrorRate": 0, "Status": { "200": 2067 } }, { "Scenario": "read", "Concurrency": 8, "RPS": 303.45433901319063, "P50Ms": 23.114886000000002, "P95Ms": 45.537688, "P99Ms": 65.524003, "ErrorRate": 0, "Status": { "200": 3027 } }, { "Scenario": "read", "Concurrency": 16, "RPS": 336.0487035096041, "P50Ms": 43.117768, "P95Ms": 87.289749, "P99Ms": 110.44098, "ErrorRate": 0, "Status": { "200": 3345 } }, { "Scenario": "read", "Concurrency": 32, "RPS": 319.64425484106636, "P50Ms": 86.06021799999999, "P95Ms": 197.978067, "P99Ms": 317.425744, "ErrorRate": 0, "Status": { "200": 3165 } }, { "Scenario": "read", "Concurrency": 64, "RPS": 330.43588202319074, "P50Ms": 161.60340100000002, "P95Ms": 442.15261, "P99Ms": 618.243098, "ErrorRate": 0, "Status": { "200": 3241 } }, { "Scenario": "toggle", "Concurrency": 1, "RPS": 26.396701626544957, "P50Ms": 37.087085, "P95Ms": 42.778312, "P99Ms": 50.690356, "ErrorRate": 0, "Status": { "303": 263 } }, { "Scenario": "toggle", "Concurrency": 2, "RPS": 52.19211696006568, "P50Ms": 36.490811, "P95Ms": 42.466494, "P99Ms": 97.711311, "ErrorRate": 0, "Status": { "303": 520 } }, { "Scenario": "toggle", "Concurrency": 4, "RPS": 105.18763725491837, "P50Ms": 36.513507000000004, "P95Ms": 43.423343, "P99Ms": 51.016984, "ErrorRate": 0, "Status": { "303": 1048 } }, { "Scenario": "toggle", "Concurrency": 8, "RPS": 207.97931204825537, "P50Ms": 37.776849, "P95Ms": 44.322362999999996, "P99Ms": 50.285772, "ErrorRate": 0, "Status": { "303": 2072 } }, { "Scenario": "toggle", "Concurrency": 16, "RPS": 286.6553076283187, "P50Ms": 47.789087, "P95Ms": 116.326087, "P99Ms": 182.763647, "ErrorRate": 0, "Status": { "303": 2851 } }, { "Scenario": "toggle", "Concurrency": 32, "RPS": 292.5391596655851, "P50Ms": 93.9515, "P95Ms": 241.690162, "P99Ms": 333.75972199999995, "ErrorRate": 0, "Status": { "303": 2894 } }, { "Scenario": "toggle", "Concurrency": 64, "RPS": 308.55310187938557, "P50Ms": 173.95269199999998, "P95Ms": 479.980394, "P99Ms": 663.634681, "ErrorRate": 0, "Status": { "303": 3023 } }, { "Scenario": "read-after", "Concurrency": 1, "RPS": 60.492996852789645, "P50Ms": 16.002378, "P95Ms": 22.689337000000002, "P99Ms": 34.779427, "ErrorRate": 0, "Status": { "200": 604 } }, { "Scenario": "read-after", "Concurrency": 2, "RPS": 107.69357496900928, "P50Ms": 18.159891000000002, "P95Ms": 24.251697, "P99Ms": 28.927315, "ErrorRate": 0, "Status": { "200": 1075 } }, { "Scenario": "read-after", "Concurrency": 4, "RPS": 220.0566636934856, "P50Ms": 17.181931000000002, "P95Ms": 26.599655, "P99Ms": 33.791053, "ErrorRate": 0, "Status": { "200": 2198 } }, { "Scenario": "read-after", "Concurrency": 8, "RPS": 186.9655489240034, "P50Ms": 40.270655000000005, "P95Ms": 56.580746, "P99Ms": 99.18809300000001, "ErrorRate": 0, "Status": { "200": 1862 } }, { "Scenario": "read-after", "Concurrency": 16, "RPS": 310.5483192319197, "P50Ms": 47.533324, "P95Ms": 75.708775, "P99Ms": 124.583215, "ErrorRate": 0, "Status": { "200": 3090 } }, { "Scenario": "read-after", "Concurrency": 32, "RPS": 317.23836553449513, "P50Ms": 87.680991, "P95Ms": 204.584494, "P99Ms": 281.92094099999997, "ErrorRate": 0, "Status": { "200": 3141 } }, { "Scenario": "read-after", "Concurrency": 64, "RPS": 336.31082957134606, "P50Ms": 142.530464, "P95Ms": 506.24814799999996, "P99Ms": 737.802824, "ErrorRate": 0, "Status": { "200": 3300 } } ], "Weight": { "HTMLBytes": 43128, "JSBytes": 3325 }, "Memory": { "IdleKB": 19160, "PeakKB": 64780, "AfterKB": 36672 }, "Code": { "Server": 609, "Templates": 102, "JS": 86, "Tests": 503, "Deps": 3 }, "Build": { "ColdSeconds": 10.390341005, "WarmSeconds": 0.272297767, "EditSeconds": 0.139181192, "Bytes": 14090402, "Host": "DOCS-T1", "ColdRuns": 1, "Runs": 3 }, "TokensBuild": { "Input": 124, "Output": 53908, "CacheRead": 7871388, "CacheWrite": 166924, "Turns": 65, "Seconds": 756.874, "CostUSD": 3.9883256 }, "TokensFix": { "Input": 22, "Output": 8277, "CacheRead": 2045481, "CacheWrite": 13112, "Turns": 12, "Seconds": 209.902, "CostUSD": 0.6796201999999991 }, "TokensSecurity": { "Input": 0, "Output": 0, "CacheRead": 0, "CacheWrite": 0, "Turns": 0, "Seconds": 0, "CostUSD": 0 }, "TokensReview": { "Input": 684516, "Output": 3432, "CacheRead": 582400, "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 traceable in seconds — Router lists every route, owned() is the single ownership seam, afterItemWrite maps error/no-row/success to 500/404/done, and done() explains the 303-vs-fragment split. Comments consistently explain why (Resolve not Run, why not csrf.Protect, parseForm's 1 MiB cap, toggleAll's single-statement race note). Weakest: renderStatus swallows template errors with a bare http.Error and no log or ref, unlike fail(); several `uid, _ := sessions.UserID(r)` rely on an invariant stated only in visitor.go; repeated 'the contract' references assume context the reader lacks; done() is a vague name for 'respond after success'. app.go mixes wiring with parseForm middleware." }, "ReviewFindings": [ "[correctness] `apps/go-rastrillo/internal/todo/static/app.js:42` — Every action response replaces the entire app, preserving only the new-todo input. With a request pending, double-click another todo and start editing: when the earlier response arrives, the editor disappears and its unsaved text is lost. Preserve the active editor’s value and focus across replacement, or defer replacement until editing finishes." ], "Notes": null }