{note.title}
\n+{note.body}
\n+ \n+{error}
{status}
{error}
{status}
{error}
{status}
Full name: {name}
\n+Email: {email}
\n+Track: {track}
\n+Statement: {statement}
\n+Full name: {name}
\n+Email: {email}
\n+Track: {track}
\n+Statement: {statement}
\n+ \n+ \n+Name: {name}
\n+Email: {email}
\n+Track: {track}
\n+Statement: {statement}
\n+{error}
{status}
{error}
{status}
{error}
{status}
{error}
{status}
{error}
{status}
{error}
{status}
{error}
{status}
{error}
{status}
{error}
{status}
{error}
| {c} | )}
|---|
| {cell} | )}
{error}
| {c} | )}
|---|
| {cell} | )}
{error}
| {c} | )}
|---|
| {cell} | )}
{error}
: null}\n+| {c} | \n+ ))}\n+
|---|
| {cell} | \n+ ))}\n+
{error}
| {c} | )}
|---|
| {cell} | )}
{error}
| {c} | )}
|---|
| {cell} | )}
{error}
| {c} | )}
|---|
| {cell} | )}
{error}
| {c} | )}
|---|
| {cell} | )}
{error}
| {c} | )}
|---|
| {cell} | )}
{error}
| {c} | )}
|---|
| {cell} | )}
{error}
| {c} | )}
|---|
| {cell} | )}
{error}
| {c} | )}
|---|
| {cell} | )}
{error}
| {c} | )}
|---|
| {cell} | )}
{error}
| {c} | )}
|---|
| {cell} | )}
{addError}
}\n+| SKU | \n+Item name | \n+Quantity | \n+Adjustment | \n+
|---|---|---|---|
| {item.sku} | \n+{item.name} | \n+{item.quantity} | \n+\n+ {' '}\n+ \n+ {adjustErrors[item.id] ? {adjustErrors[item.id]} : null}\n+ | \n+
{formError}
}\n+{adjustError}
}\n+| SKU | \n+Item name | \n+Quantity | \n+Adjustment | \n+Action | \n+
|---|---|---|---|---|
| {item.sku} | \n+{item.name} | \n+{item.quantity} | \n+\n+ setDeltas((prev) => ({ ...prev, [item.id]: e.target.value }))}\n+ />\n+ | \n+\n+ \n+ | \n+
| SKU | \n+Name | \n+Quantity | \n+Adjustment | \n+
|---|---|---|---|
| {item.sku} | \n+{item.name} | \n+{item.quantity} | \n+\n+ setAdjustments((prev) => ({ ...prev, [item.id]: e.target.value }))}\n+ />{' '}\n+ \n+ | \n+
{error}
{}| SKU | Name | Quantity | Adjust |
|---|---|---|---|
| {i.sku} | {i.name} | {i.quantity} |
{error}
{}| SKU | Name | Quantity | Adjust |
|---|---|---|---|
| {i.sku} | {i.name} | {i.quantity} |
{error}
{}| SKU | Name | Quantity | Adjust |
|---|---|---|---|
| {i.sku} | {i.name} | {i.quantity} |
{error}
{}| SKU | Name | Quantity | Adjust |
|---|---|---|---|
| {i.sku} | {i.name} | {i.quantity} |
{error}
{}| SKU | Name | Quantity | Adjust |
|---|---|---|---|
| {i.sku} | {i.name} | {i.quantity} |
{error}
{}| SKU | Name | Quantity | Adjust |
|---|---|---|---|
| {i.sku} | {i.name} | {i.quantity} |
{error}
{}| SKU | Name | Quantity | Adjust |
|---|---|---|---|
| {i.sku} | {i.name} | {i.quantity} |
{alertText}
| SKU | Name | Quantity | Adjust |
|---|---|---|---|
| {i.sku} | {i.name} | {i.quantity} |
{error}
{}| SKU | Name | Quantity | Adjust |
|---|---|---|---|
| {i.sku} | {i.name} | {i.quantity} |
{alertText}
| SKU | Name | Quantity | Adjust |
|---|---|---|---|
| {i.sku} | {i.name} | {i.quantity} |
{error}
{}| SKU | Name | Quantity | Adjust |
|---|---|---|---|
| {i.sku} | {i.name} | {i.quantity} |
{alertText}
| SKU | Name | Quantity | Adjust |
|---|---|---|---|
| {i.sku} | {i.name} | {i.quantity} |
{error}
}\n+{note.body}
\n+ \n+{error}
}\n+{n.body}
\n+ \n+{error}
}\n+{note.body}
\n+ \n+{error}
{}{visible.map(n=>{n.body}{}{error}
{}{visible.map(n=>{n.body}{}{error}
{}{visible.map(n=>{n.body}{}{error}
{}{visible.map(n=>{n.body}{}{error}
{}{visible.map(n=>{n.body}{}{error}
{}{visible.map(n=>{n.body}{}{error}
{}{visible.map(n=>{n.body}{}{error}
{visible.map(n=>{n.body}{n.archived?:}{error}
{}{visible.map(n=>{n.body}{}{error}
{visible.map(n=>{n.body}{n.archived?:}{formError}
: null}\n+{practiceError}
: null}\n+{error}
{score}
{error}
{score}
{error}
{score}
{error}
{score}
{error}
{score}
{error}
{score}
{error}
{score}
{error}
{q.explanation}
:null}{score}
{error}
{score}
{error}
{q.explanation}
:null}{score}
{error}
{status}
{error}
{status}
{error}
{status}
{alert}
: null}\n+ {status ?{status}
: null}\n+Step {step} of 3
\n+ {step === 1 ? (\n+Full name: {name}
\n+Email: {email}
\n+Track: {track}
\n+Statement: {statement}
\n+ \n+ \n+Full name: {name}
\n+Email: {email}
\n+Track: {track}
\n+Statement: {statement}
\n+{error}
{status}
{error}
{status}
{error}
{status}
{error}
{status}
{error}
{status}
{error}
{status}
{error}
{status}
{error}
{status}
{error}
{status}
{error}
{status}
{error}
{status}
{error}
{status}
{error}
| {c} | )}
|---|
| {cell} | )}
{error}
| {c} | )}
|---|
| {cell} | )}
{error}
| {c} | )}
|---|
| {cell} | )}
{error}
}\n+| {c} | \n+ ))}\n+
|---|
| {cell} | \n+ ))}\n+
{error}
}\n+No datasets yet.
\n+ ) : (\n+| \n+ {c}\n+ | \n+ ))}\n+
|---|
| {cell} | \n+ ))}\n+
{error}
| {c} | )}
|---|
| {cell} | )}
{error}
| {c} | )}
|---|
| {cell} | )}
{error}
| {c} | )}
|---|
| {cell} | )}
{error}
| {c} | )}
|---|
| {cell} | )}
{error}
| {c} | )}
|---|
| {cell} | )}
{error}
| {c} | )}
|---|
| {cell} | )}
{error}
| {c} | )}
|---|
| {cell} | )}
{error}
| {c} | )}
|---|
| {cell} | )}
{error}
| {c} | )}
|---|
| {cell} | )}
{error}
| {c} | )}
|---|
| {cell} | )}
| SKU | \n+Name | \n+Quantity | \n+Adjustment | \n+Action | \n+
|---|---|---|---|---|
| {item.sku} | \n+{item.name} | \n+{item.quantity} | \n+\n+ \n+ setDeltas((prev) => ({ ...prev, [item.id]: e.target.value }))\n+ }\n+ />\n+ | \n+\n+ \n+ | \n+
| SKU | \n+Name | \n+Quantity | \n+Adjustment | \n+Action | \n+
|---|---|---|---|---|
| {item.sku} | \n+{item.name} | \n+{item.quantity} | \n+\n+ \n+ setDeltas((prev) => ({ ...prev, [item.id]: e.target.value }))}\n+ />\n+ | \n+\n+ \n+ | \n+
| SKU | \n+Item name | \n+Quantity | \n+Adjustment | \n+
|---|---|---|---|
| {item.sku} | \n+{item.name} | \n+{item.quantity} | \n+\n+ {' '}\n+ \n+ | \n+
{error}
{}| SKU | Name | Quantity | Adjust |
|---|---|---|---|
| {i.sku} | {i.name} | {i.quantity} |
{error}
{}| SKU | Name | Quantity | Adjust |
|---|---|---|---|
| {i.sku} | {i.name} | {i.quantity} |
{error}
{}| SKU | Name | Quantity | Adjust |
|---|---|---|---|
| {i.sku} | {i.name} | {i.quantity} |
{error}
{}| SKU | Name | Quantity | Adjust |
|---|---|---|---|
| {i.sku} | {i.name} | {i.quantity} |
{error}
{}| SKU | Name | Quantity | Adjust |
|---|---|---|---|
| {i.sku} | {i.name} | {i.quantity} |
{error}
{}| SKU | Name | Quantity | Adjust |
|---|---|---|---|
| {i.sku} | {i.name} | {i.quantity} |
{error}
{}| SKU | Name | Quantity | Adjust |
|---|---|---|---|
| {i.sku} | {i.name} | {i.quantity} |
{alertText}
| SKU | Name | Quantity | Adjust |
|---|---|---|---|
| {i.sku} | {i.name} | {i.quantity} |
{error}
{}| SKU | Name | Quantity | Adjust |
|---|---|---|---|
| {i.sku} | {i.name} | {i.quantity} |
{alertText}
| SKU | Name | Quantity | Adjust |
|---|---|---|---|
| {i.sku} | {i.name} | {i.quantity} |
{error}
{}| SKU | Name | Quantity | Adjust |
|---|---|---|---|
| {i.sku} | {i.name} | {i.quantity} |
{alertText}
{}| SKU | Name | Quantity | Adjust |
|---|---|---|---|
| {i.sku} | {i.name} | {i.quantity} |
{error}
: null}\n+{note.body}
\n+ \n+{note.body}
\n+ \n+{error}
: null}\n+ \n+ setSearch(e.target.value)} />\n+{note.body}
\n+ \n+{error}
{}{visible.map(n=>{n.body}{}{error}
{}{visible.map(n=>{n.body}{}{error}
{}{visible.map(n=>{n.body}{}{error}
{}{visible.map(n=>{n.body}{}{error}
{}{visible.map(n=>{n.body}{}{error}
{}{visible.map(n=>{n.body}{}{error}
{}{visible.map(n=>{n.body}{}{error}
{visible.map(n=>{n.body}{error}
{}{visible.map(n=>{n.body}{}{error}
{visible.map(n=>{n.body}{n.archived?:}{formError}
: null}\n+{practiceError}
: null}\n+{formError}
: null}\n+A: {q.options[0]} B: {q.options[1]}
\n+{practiceError}
: null}\n+{formError}
: null}\n+\n+ {q.prompt} \u2014 A: {q.options[0]}, B: {q.options[1]}\n+
\n+ \n+{practiceError}
: null}\n+{error}
{score}
{error}
{score}
{error}
{score}
{error}
{score}
{error}
{score}
{error}
{score}
{error}
{score}
{error}
{q.explanation}
:null}{score}
{error}
{score}
{error}
{q.explanation}
:null}{score}
Cannot POST /api/applications/8/duplicate\\n\\n\\n\"\n\n404 !== 409\n"},{"id":"storage.backend_restart","group":"regression","critical":true,"passed":true,"duration_s":0.35908054200000017},{"id":"storage.existing_records","group":"regression","critical":true,"passed":true,"duration_s":0.0012410829999998897},{"id":"ui.mobile_fit","group":"usability","critical":true,"passed":true,"duration_s":0.5591102500000001}],"passed":false,"quality_score":80.0,"groups":{"acceptance":{"passed":2,"total":3,"weight":60},"regression":{"passed":7,"total":7,"weight":30},"usability":{"passed":1,"total":1,"weight":10}},"timing":{"agent_wall_s":36.51351958303712,"agent_reply_s":null,"grader_wall_s":5.7652765000239015,"verified_wall_s":42.280929125030525,"time_to_correct_visible_change_s":null},"usage":{"model_calls":2,"failed_calls":1,"usage_complete":false,"usage_note":"Raw provider fields retained; cached > input or inconsistent totals make accounting incomplete.","tokens_reported":{"input":2372,"output":129,"cached":0,"total":2501},"model_wait_s":36.46687583299354},"cost_usd":null}} +{"role":"baseline","task_id":"application.feature","trial":2,"result":{"schema_version":1,"task_id":"application.feature","app":"application","kind":"feature","split":"holdout","trial":2,"control":"start","status":"completed","started_at":"2026-09-26T10:43:58.327601+00:00","setup_wall_s":0.3267614160431549,"agent_error":null,"reply":{"role":"assistant","text":"Added duplication of submitted applications:\n- Backend `POST /api/applications/:id/duplicate` copies name/email/track/statement into a new draft (201), leaves source submitted unchanged, 404 for missing, 409 for draft source with no insert.\n- UI adds `Duplicate
Cannot POST /api/datasets\\n\\n\\n\"\n\n404 !== 201\n"},{"id":"csv.ui_import","group":"acceptance","critical":true,"passed":false,"duration_s":3.51623775,"error":"TimeoutError: locator.fill: Timeout 3000ms exceeded.\nCall log:\n\u001b[2m - waiting for getByRole('textbox', { name: 'Dataset name', exact: true }).or(getByRole('searchbox', { name: 'Dataset name', exact: true })).or(getByRole('spinbutton', { name: 'Dataset name', exact: true })).or(getByLabel('Dataset name', { exact: true }))\u001b[22m\n"},{"id":"bug.csv","group":"acceptance","critical":true,"passed":false,"duration_s":0.010986832999999934,"error":"AssertionError [ERR_ASSERTION]: \"\\n\\n\\n\\n
Cannot POST /api/datasets\\n\\n\\n\"\n\n404 !== 201\n"},{"id":"storage.backend_restart","group":"regression","critical":true,"passed":false,"duration_s":0.007594209000000774,"error":"AssertionError [ERR_ASSERTION]: \"\\n\\n\\n\\n
Cannot GET /api/datasets\\n\\n\\n\"\n\n404 !== 200\n"},{"id":"ui.mobile_fit","group":"usability","critical":true,"passed":false,"duration_s":3.5218692919999994,"error":"Error: expect(locator).toBeVisible() failed\n\nLocator: getByRole('button', { name: 'Import CSV', exact: true })\nExpected: visible\nTimeout: 3000ms\nError: element(s) not found\n\nCall log:\n - Expect \"to.be.visible\" with timeout 3000ms\n - waiting for getByRole('button', { name: 'Import CSV', exact: true })\n"}],"passed":false,"quality_score":12.0,"groups":{"acceptance":{"passed":0,"total":2,"weight":60},"regression":{"passed":2,"total":5,"weight":30},"usability":{"passed":0,"total":1,"weight":10}},"timing":{"agent_wall_s":110.36004216596484,"agent_reply_s":null,"grader_wall_s":13.130270708003081,"verified_wall_s":123.49269212502986,"time_to_correct_visible_change_s":null},"usage":{"model_calls":3,"failed_calls":1,"usage_complete":false,"usage_note":"Raw provider fields retained; cached > input or inconsistent totals make accounting incomplete.","tokens_reported":{"input":1766,"output":9876,"cached":4322,"total":11642},"model_wait_s":110.30248358496465},"cost_usd":null}} +{"role":"baseline","task_id":"csv.create","trial":3,"result":{"schema_version":1,"task_id":"csv.create","app":"csv","kind":"create","split":"holdout","trial":3,"control":"start","status":"completed","started_at":"2026-09-26T09:34:57.017831+00:00","setup_wall_s":0.3395760420244187,"agent_error":"Task exceeded 180s","reply":null,"checks":[{"id":"runtime.alive","group":"acceptance","critical":true,"passed":false,"error":"Agent timed out or exited"}],"passed":false,"quality_score":0.0,"groups":{"acceptance":{"passed":0,"total":1,"weight":60},"regression":{"passed":0,"total":0,"weight":30},"usability":{"passed":0,"total":0,"weight":10}},"timing":{"agent_wall_s":180.08398216601927,"agent_reply_s":null,"grader_wall_s":0,"verified_wall_s":180.08499470807146,"time_to_correct_visible_change_s":null},"usage":{"model_calls":6,"failed_calls":0,"usage_complete":false,"usage_note":"Raw provider fields retained; cached > input or inconsistent totals make accounting incomplete.","tokens_reported":{"input":12184,"output":16426,"cached":12868,"total":28610},"model_wait_s":182.1213777079247},"cost_usd":null}} +{"role":"baseline","task_id":"csv.edit","trial":1,"result":{"schema_version":1,"task_id":"csv.edit","app":"csv","kind":"edit","split":"holdout","trial":1,"control":"start","status":"completed","started_at":"2026-09-26T11:08:36.612645+00:00","setup_wall_s":0.32542620797175914,"agent_error":null,"reply":null,"checks":[{"id":"integrity.public_runtime","group":"regression","critical":true,"passed":true,"error":null},{"id":"build.typecheck","group":"regression","critical":true,"passed":true},{"id":"ui.contract","group":"regression","critical":true,"passed":true,"duration_s":0.8305769169999999},{"id":"csv.parser_and_validation","group":"regression","critical":true,"passed":true,"duration_s":0.04166075000000001},{"id":"csv.ui_import","group":"acceptance","critical":true,"passed":true,"duration_s":0.7650375840000001},{"id":"bug.csv","group":"acceptance","critical":true,"passed":true,"duration_s":0.5950086670000001},{"id":"storage.backend_restart","group":"regression","critical":true,"passed":true,"duration_s":0.36511558399999966},{"id":"storage.existing_records","group":"regression","critical":true,"passed":true,"duration_s":0.00122137500000008},{"id":"ui.mobile_fit","group":"usability","critical":true,"passed":true,"duration_s":0.573669875}],"passed":true,"quality_score":100.0,"groups":{"acceptance":{"passed":2,"total":2,"weight":60},"regression":{"passed":6,"total":6,"weight":30},"usability":{"passed":1,"total":1,"weight":10}},"timing":{"agent_wall_s":36.7043675420573,"agent_reply_s":36.70416495902464,"grader_wall_s":5.373298624996096,"verified_wall_s":42.07865774992388,"time_to_correct_visible_change_s":null},"usage":{"model_calls":3,"failed_calls":0,"usage_complete":true,"usage_note":"Raw provider fields retained; cached > input or inconsistent totals make accounting incomplete.","tokens_reported":{"input":9663,"output":4417,"cached":2161,"total":14080},"model_wait_s":35.68963100016117},"cost_usd":null}} +{"role":"baseline","task_id":"csv.edit","trial":2,"result":{"schema_version":1,"task_id":"csv.edit","app":"csv","kind":"edit","split":"holdout","trial":2,"control":"start","status":"completed","started_at":"2026-09-26T11:15:56.980505+00:00","setup_wall_s":0.34011375007685274,"agent_error":null,"reply":{"role":"assistant","text":"Changed heading to 'Data explorer' and set the 'Import CSV' button background to #7c3aed via inline style. All behaviour preserved; type check passes (no type changes, only string/style props).","usage":{"input":3945,"cached":6483,"output":1760,"total":5705},"profile":"16.2s total"},"checks":[{"id":"integrity.public_runtime","group":"regression","critical":true,"passed":true,"error":null},{"id":"build.typecheck","group":"regression","critical":true,"passed":true},{"id":"ui.contract","group":"regression","critical":true,"passed":true,"duration_s":0.832104458},{"id":"csv.parser_and_validation","group":"regression","critical":true,"passed":true,"duration_s":0.038946292000000084},{"id":"csv.ui_import","group":"acceptance","critical":true,"passed":true,"duration_s":0.734908958},{"id":"bug.csv","group":"acceptance","critical":true,"passed":true,"duration_s":0.594954209},{"id":"storage.backend_restart","group":"regression","critical":true,"passed":true,"duration_s":0.3567586250000004},{"id":"storage.existing_records","group":"regression","critical":true,"passed":true,"duration_s":0.0012390830000003916},{"id":"ui.mobile_fit","group":"usability","critical":true,"passed":true,"duration_s":0.569678958}],"passed":true,"quality_score":100.0,"groups":{"acceptance":{"passed":2,"total":2,"weight":60},"regression":{"passed":6,"total":6,"weight":30},"usability":{"passed":1,"total":1,"weight":10}},"timing":{"agent_wall_s":16.204773999983445,"agent_reply_s":16.161449084058404,"grader_wall_s":5.350630875094794,"verified_wall_s":21.556497083976865,"time_to_correct_visible_change_s":null},"usage":{"model_calls":3,"failed_calls":0,"usage_complete":false,"usage_note":"Raw provider fields retained; cached > input or inconsistent totals make accounting incomplete.","tokens_reported":{"input":3945,"output":1760,"cached":6483,"total":5705},"model_wait_s":15.168353250133805},"cost_usd":null}} +{"role":"baseline","task_id":"csv.edit","trial":3,"result":{"schema_version":1,"task_id":"csv.edit","app":"csv","kind":"edit","split":"holdout","trial":3,"control":"start","status":"completed","started_at":"2026-09-26T11:17:22.997326+00:00","setup_wall_s":0.3430337079335004,"agent_error":null,"reply":{"role":"assistant","text":"Changed heading to 'Data explorer' and set 'Import CSV' button background to #7c3aed via inline style. No behavior or other styles changed.","usage":{"input":6986,"cached":8787,"output":3654,"total":10640},"profile":"26.2s total"},"checks":[{"id":"integrity.public_runtime","group":"regression","critical":true,"passed":true,"error":null},{"id":"build.typecheck","group":"regression","critical":true,"passed":true},{"id":"ui.contract","group":"regression","critical":true,"passed":true,"duration_s":0.8441967910000001},{"id":"csv.parser_and_validation","group":"regression","critical":true,"passed":true,"duration_s":0.042533083000000034},{"id":"csv.ui_import","group":"acceptance","critical":true,"passed":true,"duration_s":0.7378968340000002},{"id":"bug.csv","group":"acceptance","critical":true,"passed":true,"duration_s":0.596668541},{"id":"storage.backend_restart","group":"regression","critical":true,"passed":true,"duration_s":0.3557044170000004},{"id":"storage.existing_records","group":"regression","critical":true,"passed":true,"duration_s":0.001184208000000126},{"id":"ui.mobile_fit","group":"usability","critical":true,"passed":true,"duration_s":0.572714}],"passed":true,"quality_score":100.0,"groups":{"acceptance":{"passed":2,"total":2,"weight":60},"regression":{"passed":6,"total":6,"weight":30},"usability":{"passed":1,"total":1,"weight":10}},"timing":{"agent_wall_s":26.245552834006958,"agent_reply_s":26.20635787502397,"grader_wall_s":5.3145817500771955,"verified_wall_s":31.561311165918596,"time_to_correct_visible_change_s":null},"usage":{"model_calls":4,"failed_calls":0,"usage_complete":false,"usage_note":"Raw provider fields retained; cached > input or inconsistent totals make accounting incomplete.","tokens_reported":{"input":6986,"output":3654,"cached":8787,"total":10640},"model_wait_s":25.172448333119974},"cost_usd":null}} +{"role":"baseline","task_id":"csv.feature","trial":1,"result":{"schema_version":1,"task_id":"csv.feature","app":"csv","kind":"feature","split":"holdout","trial":1,"control":"start","status":"completed","started_at":"2026-09-26T10:42:35.053866+00:00","setup_wall_s":0.3370530419051647,"agent_error":null,"reply":{"role":"assistant","text":"Added sorting to the selected dataset in `frontend/src/App.tsx`:\n- `Sort column` select with `None` plus each column header, and `Sort direction` select with `Ascending`/`Descending`, both with accessible label names.\n- Numeric sort when every stored row's value in that column is a non-blank finite number, otherwise lexicographic string compare.\n- Sort composes with `Search rows` via copies (`filter` + `[...].sort`), never mutating stored order; `None` restores original order; opening another dataset (or importing) resets sort/search.\n- Wrapped `Data` table in an `overflow-x: auto` container to avoid page overflow at 390px/1280px.\n\nCould not run `npm test` (no shell tool available in this session); the change is type-only-safe state plus array copies with no new dependencies or backend/schema changes.","usage":{"input":10713,"cached":13124,"output":8221,"total":18934},"profile":"76.5s total"},"checks":[{"id":"integrity.public_runtime","group":"regression","critical":true,"passed":true,"error":null},{"id":"build.typecheck","group":"regression","critical":true,"passed":true},{"id":"ui.contract","group":"regression","critical":true,"passed":true,"duration_s":0.820693291},{"id":"csv.parser_and_validation","group":"regression","critical":true,"passed":true,"duration_s":0.052335624999999934},{"id":"csv.ui_import","group":"acceptance","critical":true,"passed":true,"duration_s":0.7636029160000001},{"id":"bug.csv","group":"acceptance","critical":true,"passed":true,"duration_s":0.5948920000000003},{"id":"feature.csv","group":"acceptance","critical":true,"passed":true,"duration_s":0.6216350000000003},{"id":"storage.backend_restart","group":"regression","critical":true,"passed":true,"duration_s":0.35673016700000015},{"id":"storage.existing_records","group":"regression","critical":true,"passed":true,"duration_s":0.0012125420000002123},{"id":"ui.mobile_fit","group":"usability","critical":true,"passed":true,"duration_s":0.570085458}],"passed":true,"quality_score":100.0,"groups":{"acceptance":{"passed":3,"total":3,"weight":60},"regression":{"passed":6,"total":6,"weight":30},"usability":{"passed":1,"total":1,"weight":10}},"timing":{"agent_wall_s":76.46785224997438,"agent_reply_s":76.46121533296537,"grader_wall_s":5.961509541957639,"verified_wall_s":82.43052904203068,"time_to_correct_visible_change_s":null},"usage":{"model_calls":5,"failed_calls":0,"usage_complete":false,"usage_note":"Raw provider fields retained; cached > input or inconsistent totals make accounting incomplete.","tokens_reported":{"input":10713,"output":8221,"cached":13124,"total":18934},"model_wait_s":75.36706662504002},"cost_usd":null}} +{"role":"baseline","task_id":"csv.feature","trial":2,"result":{"schema_version":1,"task_id":"csv.feature","app":"csv","kind":"feature","split":"holdout","trial":2,"control":"start","status":"completed","started_at":"2026-09-26T10:20:12.236967+00:00","setup_wall_s":0.34005008405074477,"agent_error":null,"reply":{"role":"assistant","text":"Added dataset sorting in `frontend/src/App.tsx`:\n- `Sort column` select with `None` plus each column header, and `Sort direction` select with `Ascending`/`Descending`, both with accessible label names.\n- Numeric sort when every stored row in that column is a non-blank finite number, otherwise lexicographic string sort; stable and non-mutating.\n- Search and sort compose (filter then stable-sort); `None` restores original order; opening a dataset resets search/sort.\n- Wrapped `Data` table in a horizontal-scroll container to avoid page overflow at 390px/1280px.\n\nNo backend/storage changes; existing CSV validation, API, and persistence preserved. Type check (`tsc --noEmit`) passes for the change (state typed as `asc|desc`, column lookup guards missing index).","usage":{"input":5923,"cached":6754,"output":6968,"total":12891},"profile":"62.1s total"},"checks":[{"id":"integrity.public_runtime","group":"regression","critical":true,"passed":true,"error":null},{"id":"build.typecheck","group":"regression","critical":true,"passed":true},{"id":"ui.contract","group":"regression","critical":true,"passed":true,"duration_s":0.8151179159999999},{"id":"csv.parser_and_validation","group":"regression","critical":true,"passed":true,"duration_s":0.04673804199999995},{"id":"csv.ui_import","group":"acceptance","critical":true,"passed":true,"duration_s":0.7516554590000001},{"id":"bug.csv","group":"acceptance","critical":true,"passed":true,"duration_s":0.5950704580000001},{"id":"feature.csv","group":"acceptance","critical":true,"passed":true,"duration_s":0.6239145830000002},{"id":"storage.backend_restart","group":"regression","critical":true,"passed":true,"duration_s":0.4632439169999998},{"id":"storage.existing_records","group":"regression","critical":true,"passed":true,"duration_s":0.002268166000000292},{"id":"ui.mobile_fit","group":"usability","critical":true,"passed":true,"duration_s":0.5774693749999996}],"passed":true,"quality_score":100.0,"groups":{"acceptance":{"passed":3,"total":3,"weight":60},"regression":{"passed":6,"total":6,"weight":30},"usability":{"passed":1,"total":1,"weight":10}},"timing":{"agent_wall_s":62.14512204192579,"agent_reply_s":62.13577904191334,"grader_wall_s":6.177085916046053,"verified_wall_s":68.32321875006892,"time_to_correct_visible_change_s":null},"usage":{"model_calls":3,"failed_calls":0,"usage_complete":false,"usage_note":"Raw provider fields retained; cached > input or inconsistent totals make accounting incomplete.","tokens_reported":{"input":5923,"output":6968,"cached":6754,"total":12891},"model_wait_s":61.00427008315455},"cost_usd":null}} +{"role":"baseline","task_id":"csv.feature","trial":3,"result":{"schema_version":1,"task_id":"csv.feature","app":"csv","kind":"feature","split":"holdout","trial":3,"control":"start","status":"completed","started_at":"2026-09-26T10:06:28.767138+00:00","setup_wall_s":0.337822167086415,"agent_error":"Error: LLM returned 500 Internal Server Error: \r\n
Score: undefined/undefined
\n - unexpected value \"Score: undefined/undefined\"\n"},{"id":"storage.backend_restart","group":"regression","critical":true,"passed":true,"duration_s":0.37905991600000016},{"id":"storage.existing_records","group":"regression","critical":true,"passed":true,"duration_s":0.0013702089999997043},{"id":"ui.mobile_fit","group":"usability","critical":true,"passed":true,"duration_s":0.5704720829999996}],"passed":false,"quality_score":40.0,"groups":{"acceptance":{"passed":0,"total":2,"weight":60},"regression":{"passed":6,"total":6,"weight":30},"usability":{"passed":1,"total":1,"weight":10}},"timing":{"agent_wall_s":9.732614874956198,"agent_reply_s":9.732363541028462,"grader_wall_s":7.575269999913871,"verified_wall_s":17.308898249990307,"time_to_correct_visible_change_s":null},"usage":{"model_calls":2,"failed_calls":0,"usage_complete":false,"usage_note":"Raw provider fields retained; cached > input or inconsistent totals make accounting incomplete.","tokens_reported":{"input":4117,"output":894,"cached":2161,"total":5011},"model_wait_s":8.837075666058809},"cost_usd":null}} +{"role":"baseline","task_id":"quiz.bug","trial":2,"result":{"schema_version":1,"task_id":"quiz.bug","app":"quiz","kind":"bug","split":"holdout","trial":2,"control":"start","status":"completed","started_at":"2026-09-26T11:03:57.142877+00:00","setup_wall_s":0.33772099995985627,"agent_error":null,"reply":{"role":"assistant","text":"Fixed `POST /api/grade` to count choice 0: `if(a.choice && a.choice===q.correctIndex)` \u2192 `if(a.choice===q.correctIndex)`. Validation, health check, ports, and all other behavior unchanged; single-expression fix keeps `tsc --noEmit` clean.","usage":{"input":4484,"cached":6114,"output":2464,"total":6948},"profile":"22.5s total"},"checks":[{"id":"integrity.public_runtime","group":"regression","critical":true,"passed":true,"error":null},{"id":"build.typecheck","group":"regression","critical":true,"passed":true},{"id":"ui.contract","group":"regression","critical":true,"passed":true,"duration_s":0.817457417},{"id":"quiz.validation","group":"regression","critical":true,"passed":true,"duration_s":0.07433929199999989},{"id":"bug.quiz","group":"acceptance","critical":true,"passed":true,"duration_s":0.004517041999999947},{"id":"quiz.ui_practice","group":"acceptance","critical":true,"passed":true,"duration_s":0.9240648750000002},{"id":"storage.backend_restart","group":"regression","critical":true,"passed":true,"duration_s":0.3783178750000002},{"id":"storage.existing_records","group":"regression","critical":true,"passed":true,"duration_s":0.0012815839999998388},{"id":"ui.mobile_fit","group":"usability","critical":true,"passed":true,"duration_s":0.5572430409999998}],"passed":true,"quality_score":100.0,"groups":{"acceptance":{"passed":2,"total":2,"weight":60},"regression":{"passed":6,"total":6,"weight":30},"usability":{"passed":1,"total":1,"weight":10}},"timing":{"agent_wall_s":22.574336541001685,"agent_reply_s":22.53500858298503,"grader_wall_s":4.934772291104309,"verified_wall_s":27.51008529192768,"time_to_correct_visible_change_s":null},"usage":{"model_calls":3,"failed_calls":0,"usage_complete":false,"usage_note":"Raw provider fields retained; cached > input or inconsistent totals make accounting incomplete.","tokens_reported":{"input":4484,"output":2464,"cached":6114,"total":6948},"model_wait_s":21.53654495801311},"cost_usd":null}} +{"role":"baseline","task_id":"quiz.bug","trial":3,"result":{"schema_version":1,"task_id":"quiz.bug","app":"quiz","kind":"bug","split":"holdout","trial":3,"control":"start","status":"completed","started_at":"2026-09-26T11:06:08.579068+00:00","setup_wall_s":0.33451654110103846,"agent_error":null,"reply":{"role":"assistant","text":"Fixed grading so choice 0 counts: removed the truthiness guard so `a.choice === q.correctIndex` awards the point. Validation unchanged.","usage":{"input":2216,"cached":8403,"output":1592,"total":3808},"profile":"17.5s total"},"checks":[{"id":"integrity.public_runtime","group":"regression","critical":true,"passed":true,"error":null},{"id":"build.typecheck","group":"regression","critical":true,"passed":true},{"id":"ui.contract","group":"regression","critical":true,"passed":true,"duration_s":0.8161884580000001},{"id":"quiz.validation","group":"regression","critical":true,"passed":true,"duration_s":0.051377124999999975},{"id":"bug.quiz","group":"acceptance","critical":true,"passed":true,"duration_s":0.004502499999999827},{"id":"quiz.ui_practice","group":"acceptance","critical":true,"passed":true,"duration_s":0.9334780830000002},{"id":"storage.backend_restart","group":"regression","critical":true,"passed":true,"duration_s":0.3717486660000004},{"id":"storage.existing_records","group":"regression","critical":true,"passed":true,"duration_s":0.0013993749999999636},{"id":"ui.mobile_fit","group":"usability","critical":true,"passed":true,"duration_s":0.5714479999999998}],"passed":true,"quality_score":100.0,"groups":{"acceptance":{"passed":2,"total":2,"weight":60},"regression":{"passed":6,"total":6,"weight":30},"usability":{"passed":1,"total":1,"weight":10}},"timing":{"agent_wall_s":17.561317209037952,"agent_reply_s":17.505796334007755,"grader_wall_s":4.9687843340216205,"verified_wall_s":22.531100832973607,"time_to_correct_visible_change_s":null},"usage":{"model_calls":3,"failed_calls":0,"usage_complete":false,"usage_note":"Raw provider fields retained; cached > input or inconsistent totals make accounting incomplete.","tokens_reported":{"input":2216,"output":1592,"cached":8403,"total":3808},"model_wait_s":16.400601292029023},"cost_usd":null}} +{"role":"baseline","task_id":"quiz.create","trial":1,"result":{"schema_version":1,"task_id":"quiz.create","app":"quiz","kind":"create","split":"holdout","trial":1,"control":"start","status":"completed","started_at":"2026-09-26T09:44:19.387061+00:00","setup_wall_s":0.33138745790347457,"agent_error":"Task exceeded 180s","reply":null,"checks":[{"id":"runtime.alive","group":"acceptance","critical":true,"passed":false,"error":"Agent timed out or exited"}],"passed":false,"quality_score":0.0,"groups":{"acceptance":{"passed":0,"total":1,"weight":60},"regression":{"passed":0,"total":0,"weight":30},"usability":{"passed":0,"total":0,"weight":10}},"timing":{"agent_wall_s":180.06253791600466,"agent_reply_s":null,"grader_wall_s":0,"verified_wall_s":180.06380349991377,"time_to_correct_visible_change_s":null},"usage":{"model_calls":6,"failed_calls":0,"usage_complete":false,"usage_note":"Raw provider fields retained; cached > input or inconsistent totals make accounting incomplete.","tokens_reported":{"input":19300,"output":21071,"cached":15955,"total":40371},"model_wait_s":192.55857754219323},"cost_usd":null}} +{"role":"baseline","task_id":"quiz.create","trial":2,"result":{"schema_version":1,"task_id":"quiz.create","app":"quiz","kind":"create","split":"holdout","trial":2,"control":"start","status":"completed","started_at":"2026-09-26T09:00:59.144980+00:00","setup_wall_s":0.34533079201355577,"agent_error":"Task exceeded 180s","reply":null,"checks":[{"id":"runtime.alive","group":"acceptance","critical":true,"passed":false,"error":"Agent timed out or exited"}],"passed":false,"quality_score":0.0,"groups":{"acceptance":{"passed":0,"total":1,"weight":60},"regression":{"passed":0,"total":0,"weight":30},"usability":{"passed":0,"total":0,"weight":10}},"timing":{"agent_wall_s":180.08410512492992,"agent_reply_s":null,"grader_wall_s":0,"verified_wall_s":180.08525866700802,"time_to_correct_visible_change_s":null},"usage":{"model_calls":8,"failed_calls":0,"usage_complete":false,"usage_note":"Raw provider fields retained; cached > input or inconsistent totals make accounting incomplete.","tokens_reported":{"input":11040,"output":20534,"cached":34184,"total":31574},"model_wait_s":191.549809917924},"cost_usd":null}} +{"role":"baseline","task_id":"quiz.create","trial":3,"result":{"schema_version":1,"task_id":"quiz.create","app":"quiz","kind":"create","split":"holdout","trial":3,"control":"start","status":"completed","started_at":"2026-09-26T09:06:49.937873+00:00","setup_wall_s":0.3402570419711992,"agent_error":"Error: LLM returned 524 : error code: 524","reply":null,"checks":[{"id":"integrity.public_runtime","group":"regression","critical":true,"passed":true,"error":null},{"id":"build.typecheck","group":"regression","critical":true,"passed":true},{"id":"ui.contract","group":"regression","critical":true,"passed":false,"duration_s":3.7676819169999995,"error":"Error: expect(locator).toBeVisible() failed\n\nLocator: getByRole('heading', { name: 'Quiz builder', exact: true, level: 1 })\nExpected: visible\nTimeout: 3000ms\nError: element(s) not found\n\nCall log:\n - Expect \"to.be.visible\" with timeout 3000ms\n - waiting for getByRole('heading', { name: 'Quiz builder', exact: true, level: 1 })\n"},{"id":"quiz.validation","group":"regression","critical":true,"passed":false,"duration_s":0.034974957999999785,"error":"AssertionError [ERR_ASSERTION]: \"\\n\\n\\n\\nCannot GET /api/questions\\n\\n\\n\"\n\n404 !== 200\n"},{"id":"bug.quiz","group":"acceptance","critical":true,"passed":false,"duration_s":0.012780999999999949,"error":"AssertionError [ERR_ASSERTION]: \"\\n\\n\\n\\n
Cannot POST /api/questions\\n\\n\\n\"\n\n404 !== 201\n"},{"id":"quiz.ui_practice","group":"acceptance","critical":true,"passed":false,"duration_s":3.516621,"error":"TimeoutError: locator.fill: Timeout 3000ms exceeded.\nCall log:\n\u001b[2m - waiting for getByRole('textbox', { name: 'Question', exact: true }).or(getByRole('searchbox', { name: 'Question', exact: true })).or(getByRole('spinbutton', { name: 'Question', exact: true })).or(getByLabel('Question', { exact: true }))\u001b[22m\n"},{"id":"storage.backend_restart","group":"regression","critical":true,"passed":false,"duration_s":0.012199000000000524,"error":"AssertionError [ERR_ASSERTION]: \"\\n\\n\\n\\n
Cannot GET /api/questions\\n\\n\\n\"\n\n404 !== 200\n"},{"id":"ui.mobile_fit","group":"usability","critical":true,"passed":false,"duration_s":3.528016458,"error":"Error: expect(locator).toBeVisible() failed\n\nLocator: getByRole('button', { name: 'Add question', exact: true })\nExpected: visible\nTimeout: 3000ms\nError: element(s) not found\n\nCall log:\n - Expect \"to.be.visible\" with timeout 3000ms\n - waiting for getByRole('button', { name: 'Add question', exact: true })\n"}],"passed":false,"quality_score":12.0,"groups":{"acceptance":{"passed":0,"total":2,"weight":60},"regression":{"passed":2,"total":5,"weight":30},"usability":{"passed":0,"total":1,"weight":10}},"timing":{"agent_wall_s":177.7815005419543,"agent_reply_s":null,"grader_wall_s":13.073602500022389,"verified_wall_s":190.85756095906254,"time_to_correct_visible_change_s":null},"usage":{"model_calls":4,"failed_calls":1,"usage_complete":false,"usage_note":"Raw provider fields retained; cached > input or inconsistent totals make accounting incomplete.","tokens_reported":{"input":2284,"output":4197,"cached":8275,"total":6481},"model_wait_s":177.70017004187685},"cost_usd":null}} +{"role":"baseline","task_id":"quiz.edit","trial":1,"result":{"schema_version":1,"task_id":"quiz.edit","app":"quiz","kind":"edit","split":"holdout","trial":1,"control":"start","status":"completed","started_at":"2026-09-26T11:14:02.439505+00:00","setup_wall_s":0.34692770801484585,"agent_error":null,"reply":{"role":"assistant","text":"Changed heading to 'Knowledge studio' and set the 'Add question' button background to #7c3aed via inline style. No other behaviour changed.","usage":{"input":5051,"cached":10564,"output":3677,"total":8728},"profile":"36.7s total"},"checks":[{"id":"integrity.public_runtime","group":"regression","critical":true,"passed":true,"error":null},{"id":"build.typecheck","group":"regression","critical":true,"passed":true},{"id":"ui.contract","group":"regression","critical":true,"passed":true,"duration_s":0.8385652079999999},{"id":"quiz.validation","group":"regression","critical":true,"passed":true,"duration_s":0.04907454099999995},{"id":"bug.quiz","group":"acceptance","critical":true,"passed":true,"duration_s":0.004747791000000006},{"id":"quiz.ui_practice","group":"acceptance","critical":true,"passed":true,"duration_s":0.8961600829999997},{"id":"storage.backend_restart","group":"regression","critical":true,"passed":true,"duration_s":0.369680875},{"id":"storage.existing_records","group":"regression","critical":true,"passed":true,"duration_s":0.0012785420000000157},{"id":"ui.mobile_fit","group":"usability","critical":true,"passed":true,"duration_s":0.5680104999999999}],"passed":true,"quality_score":100.0,"groups":{"acceptance":{"passed":2,"total":2,"weight":60},"regression":{"passed":6,"total":6,"weight":30},"usability":{"passed":1,"total":1,"weight":10}},"timing":{"agent_wall_s":36.7622771669412,"agent_reply_s":36.721720417030156,"grader_wall_s":5.013523000059649,"verified_wall_s":41.77684066595975,"time_to_correct_visible_change_s":null},"usage":{"model_calls":4,"failed_calls":0,"usage_complete":false,"usage_note":"Raw provider fields retained; cached > input or inconsistent totals make accounting incomplete.","tokens_reported":{"input":5051,"output":3677,"cached":10564,"total":8728},"model_wait_s":35.666506791021675},"cost_usd":null}} +{"role":"baseline","task_id":"quiz.edit","trial":2,"result":{"schema_version":1,"task_id":"quiz.edit","app":"quiz","kind":"edit","split":"holdout","trial":2,"control":"start","status":"completed","started_at":"2026-09-26T11:10:42.537795+00:00","setup_wall_s":0.43643512506969273,"agent_error":null,"reply":{"role":"assistant","text":"Changed heading to 'Knowledge studio' and 'Add question' button background to #7c3aed. No other behaviour changed.","usage":{"input":9864,"cached":19509,"output":7502,"total":17366},"profile":"67.7s total"},"checks":[{"id":"integrity.public_runtime","group":"regression","critical":true,"passed":true,"error":null},{"id":"build.typecheck","group":"regression","critical":true,"passed":true},{"id":"ui.contract","group":"regression","critical":true,"passed":true,"duration_s":0.84108925},{"id":"quiz.validation","group":"regression","critical":true,"passed":true,"duration_s":0.04752370799999994},{"id":"bug.quiz","group":"acceptance","critical":true,"passed":true,"duration_s":0.004997666999999865},{"id":"quiz.ui_practice","group":"acceptance","critical":true,"passed":true,"duration_s":0.920869125},{"id":"storage.backend_restart","group":"regression","critical":true,"passed":true,"duration_s":0.3702492910000001},{"id":"storage.existing_records","group":"regression","critical":true,"passed":true,"duration_s":0.0012015000000001237},{"id":"ui.mobile_fit","group":"usability","critical":true,"passed":true,"duration_s":0.5666309999999999}],"passed":true,"quality_score":100.0,"groups":{"acceptance":{"passed":2,"total":2,"weight":60},"regression":{"passed":6,"total":6,"weight":30},"usability":{"passed":1,"total":1,"weight":10}},"timing":{"agent_wall_s":67.70260879199486,"agent_reply_s":67.67877100000624,"grader_wall_s":4.924798583961092,"verified_wall_s":72.62864583299961,"time_to_correct_visible_change_s":null},"usage":{"model_calls":6,"failed_calls":0,"usage_complete":false,"usage_note":"Raw provider fields retained; cached > input or inconsistent totals make accounting incomplete.","tokens_reported":{"input":9864,"output":7502,"cached":19509,"total":17366},"model_wait_s":66.59861345891841},"cost_usd":null}} +{"role":"baseline","task_id":"quiz.edit","trial":3,"result":{"schema_version":1,"task_id":"quiz.edit","app":"quiz","kind":"edit","split":"holdout","trial":3,"control":"start","status":"completed","started_at":"2026-09-26T11:12:34.600472+00:00","setup_wall_s":0.3352458330336958,"agent_error":null,"reply":{"role":"assistant","text":"Changed heading to 'Knowledge studio' and 'Add question' button background to #7c3aed via inline style. No other behaviour changed.","usage":{"input":4550,"cached":6483,"output":2516,"total":7066},"profile":"21.9s total"},"checks":[{"id":"integrity.public_runtime","group":"regression","critical":true,"passed":true,"error":null},{"id":"build.typecheck","group":"regression","critical":true,"passed":true},{"id":"ui.contract","group":"regression","critical":true,"passed":true,"duration_s":0.902011583},{"id":"quiz.validation","group":"regression","critical":true,"passed":true,"duration_s":0.07992929200000003},{"id":"bug.quiz","group":"acceptance","critical":true,"passed":true,"duration_s":0.004523333000000094},{"id":"quiz.ui_practice","group":"acceptance","critical":true,"passed":true,"duration_s":0.9021854589999998},{"id":"storage.backend_restart","group":"regression","critical":true,"passed":true,"duration_s":0.37540937500000016},{"id":"storage.existing_records","group":"regression","critical":true,"passed":true,"duration_s":0.0011595420000003287},{"id":"ui.mobile_fit","group":"usability","critical":true,"passed":true,"duration_s":0.5704094169999998}],"passed":true,"quality_score":100.0,"groups":{"acceptance":{"passed":2,"total":2,"weight":60},"regression":{"passed":6,"total":6,"weight":30},"usability":{"passed":1,"total":1,"weight":10}},"timing":{"agent_wall_s":21.89453162497375,"agent_reply_s":21.87787370791193,"grader_wall_s":5.00223499990534,"verified_wall_s":26.897776833968237,"time_to_correct_visible_change_s":null},"usage":{"model_calls":3,"failed_calls":0,"usage_complete":false,"usage_note":"Raw provider fields retained; cached > input or inconsistent totals make accounting incomplete.","tokens_reported":{"input":4550,"output":2516,"cached":6483,"total":7066},"model_wait_s":20.875128875952214},"cost_usd":null}} +{"role":"baseline","task_id":"quiz.feature","trial":1,"result":{"schema_version":1,"task_id":"quiz.feature","app":"quiz","kind":"feature","split":"holdout","trial":1,"control":"start","status":"completed","started_at":"2026-09-26T10:30:40.870108+00:00","setup_wall_s":0.33451412501744926,"agent_error":null,"reply":{"role":"assistant","text":"Added optional `explanation` support:\n\n- Backend `POST /api/questions` accepts optional string `explanation` (omitted \u2192 `\"\"`), rejects non-strings with 400, and all returned questions include `explanation`. Migrated SQLite via `ALTER TABLE \u2026 ADD COLUMN explanation TEXT NOT NULL DEFAULT ''` preserving existing rows/fields.\n- Frontend question form has `