test_button_one_requires_explicit_task_when_ambiguous (test_backend.BackendTests) ... ok
test_button_one_selects_single_task_but_rejects_cross_label (test_backend.BackendTests) ... ok
test_button_replenishment_cannot_confirm_as_pick (test_backend.BackendTests) ... ok
test_button_two_reuses_open_request (test_backend.BackendTests) ... ok
test_cancel_releases_reservation_without_changing_stock (test_backend.BackendTests) ... ok
test_concurrent_duplicate_events_deduct_exactly_once (test_backend.BackendTests) ... ok
test_concurrent_pick_creation_cannot_overbook (test_backend.BackendTests) ... ok
test_create_label_enforces_scenario_utf8_and_uniqueness (test_backend.BackendTests) ... ok
test_duplicate_device_event_survives_restart (test_backend.BackendTests) ... ok
test_event_id_cannot_be_reused_for_other_operation (test_backend.BackendTests) ... ok
test_invalid_numeric_inputs_are_rejected_without_side_effects (test_backend.BackendTests) ... ok
test_inventory_reason_and_csv_formula_safety (test_backend.BackendTests) ... ok
test_isolated_unicode_surrogate_is_bad_input_not_server_error (test_backend.BackendTests) ... ok
test_overflow_replenishment_rolls_back (test_backend.BackendTests) ... ok
test_replenishment_adds_only_at_confirmation_and_is_unique (test_backend.BackendTests) ... ok
test_reservations_prevent_overbooking_and_low_inventory_adjustment (test_backend.BackendTests) ... ok
test_task_confirmation_is_idempotent (test_backend.BackendTests) ... ok
test_three_scenarios_seed_and_restart_persistence (test_backend.BackendTests) ... ok
test_virtual_ack_never_completes_business_task (test_backend.BackendTests) ... ok
test_host_origin_and_csrf_are_enforced (test_backend.HTTPTests) ... [2026-10-03T15:47:40.470Z] 127.0.0.1 "POST /api/labels/EL-001/locate HTTP/1.1" 403 -
[2026-10-03T15:47:40.471Z] 127.0.0.1 "POST /api/labels/EL-001/locate HTTP/1.1" 403 -
[2026-10-03T15:47:40.471Z] 127.0.0.1 "POST /api/labels/EL-001/locate HTTP/1.1" 403 -
[2026-10-03T15:47:40.471Z] 127.0.0.1 "POST /api/labels/EL-001/locate HTTP/1.1" 403 -
[2026-10-03T15:47:40.472Z] 127.0.0.1 "GET /api/state HTTP/1.1" 403 -
ok
test_http_mutation_and_csv_roundtrip (test_backend.HTTPTests) ... [2026-10-03T15:47:40.514Z] 127.0.0.1 "POST /api/tasks HTTP/1.1" 200 -
[2026-10-03T15:47:40.517Z] 127.0.0.1 "POST /api/tasks/f787ade1-f75a-4233-96d9-1d13112dca9c/complete HTTP/1.1" 200 -
[2026-10-03T15:47:40.518Z] 127.0.0.1 "GET /api/export HTTP/1.1" 200 -
ok
test_json_content_type_size_and_input_validation (test_backend.HTTPTests) ... [2026-10-03T15:47:40.554Z] 127.0.0.1 "POST /api/tasks HTTP/1.1" 415 -
[2026-10-03T15:47:40.555Z] 127.0.0.1 "POST /api/tasks HTTP/1.1" 400 -
[2026-10-03T15:47:40.555Z] 127.0.0.1 "POST /api/tasks HTTP/1.1" 400 -
[2026-10-03T15:47:40.556Z] 127.0.0.1 "POST /api/tasks HTTP/1.1" 400 -
[2026-10-03T15:47:40.556Z] 127.0.0.1 "POST /api/tasks HTTP/1.1" 413 -
[2026-10-03T15:47:40.558Z] 127.0.0.1 "POST /api/tasks HTTP/1.1" 400 -
[2026-10-03T15:47:40.559Z] 127.0.0.1 "POST /api/labels/unknown/inventory HTTP/1.1" 404 -
[2026-10-03T15:47:40.560Z] 127.0.0.1 "POST /api/tasks/missing/complete HTTP/1.1" 404 -
ok
test_state_health_and_static (test_backend.HTTPTests) ... [2026-10-03T15:47:40.591Z] 127.0.0.1 "GET /api/state HTTP/1.1" 200 -
[2026-10-03T15:47:40.592Z] 127.0.0.1 "GET /health HTTP/1.1" 200 -
[2026-10-03T15:47:40.598Z] 127.0.0.1 "GET / HTTP/1.1" 200 -
[2026-10-03T15:47:40.599Z] 127.0.0.1 "HEAD / HTTP/1.1" 200 -
ok
test_static_traversal_and_symlinks_cannot_escape (test_backend.HTTPTests) ... [2026-10-03T15:47:40.631Z] 127.0.0.1 "GET /../secret.txt HTTP/1.1" 403 -
[2026-10-03T15:47:40.631Z] 127.0.0.1 "GET /%2e%2e/secret.txt HTTP/1.1" 403 -
[2026-10-03T15:47:40.632Z] 127.0.0.1 "GET /..%5csecret.txt HTTP/1.1" 403 -
[2026-10-03T15:47:40.632Z] 127.0.0.1 "GET /escape.txt HTTP/1.1" 403 -
[2026-10-03T15:47:40.632Z] 127.0.0.1 "GET /%00secret.txt HTTP/1.1" 403 -
[2026-10-03T15:47:40.633Z] 127.0.0.1 "GET /api/missing HTTP/1.1" 404 -
ok

----------------------------------------------------------------------
Ran 24 tests in 0.692s

OK
