2026-04-17T17:29:33.076976+00:00 app[web.1]: Exception in ASGI application 2026-04-17T17:29:33.076978+00:00 app[web.1]: Traceback (most recent call last): 2026-04-17T17:29:33.076979+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/uvicorn/protocols/http/h11_impl.py", line 396, in run_asgi 2026-04-17T17:29:33.076980+00:00 app[web.1]: result = await app(self.scope, self.receive, self.send) 2026-04-17T17:29:33.076980+00:00 app[web.1]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2026-04-17T17:29:33.076980+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__ 2026-04-17T17:29:33.076980+00:00 app[web.1]: return await self.app(scope, receive, send) 2026-04-17T17:29:33.076981+00:00 app[web.1]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2026-04-17T17:29:33.076981+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/sentry_sdk/integrations/starlette.py", line 416, in _sentry_patched_asgi_app 2026-04-17T17:29:33.076982+00:00 app[web.1]: return await middleware(scope, receive, send) 2026-04-17T17:29:33.076982+00:00 app[web.1]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2026-04-17T17:29:33.076983+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/sentry_sdk/integrations/asgi.py", line 184, in _run_asgi3 2026-04-17T17:29:33.076984+00:00 app[web.1]: return await self._run_app(scope, receive, send, asgi_version=3) 2026-04-17T17:29:33.076984+00:00 app[web.1]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2026-04-17T17:29:33.076984+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/sentry_sdk/integrations/asgi.py", line 360, in _run_app 2026-04-17T17:29:33.076985+00:00 app[web.1]: raise exc from None 2026-04-17T17:29:33.076985+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/sentry_sdk/integrations/asgi.py", line 348, in _run_app 2026-04-17T17:29:33.076985+00:00 app[web.1]: return await self.app( 2026-04-17T17:29:33.076986+00:00 app[web.1]: ^^^^^^^^^^^^^^^ 2026-04-17T17:29:33.076986+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/starlette/applications.py", line 112, in __call__ 2026-04-17T17:29:33.076986+00:00 app[web.1]: await self.middleware_stack(scope, receive, send) 2026-04-17T17:29:33.076987+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/sentry_sdk/integrations/starlette.py", line 164, in _create_span_call 2026-04-17T17:29:33.076987+00:00 app[web.1]: return await old_call(app, scope, receive, send, **kwargs) 2026-04-17T17:29:33.076987+00:00 app[web.1]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2026-04-17T17:29:33.076987+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/starlette/middleware/base.py", line 26, in __call__ 2026-04-17T17:29:33.076987+00:00 app[web.1]: await response(scope, receive, send) 2026-04-17T17:29:33.076988+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/starlette/responses.py", line 224, in __call__ 2026-04-17T17:29:33.076988+00:00 app[web.1]: await run_until_first_complete( 2026-04-17T17:29:33.076988+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/starlette/concurrency.py", line 24, in run_until_first_complete 2026-04-17T17:29:33.076988+00:00 app[web.1]: [task.result() for task in done] 2026-04-17T17:29:33.076988+00:00 app[web.1]: ^^^^^^^^^^^^^ 2026-04-17T17:29:33.076989+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/starlette/responses.py", line 216, in stream_response 2026-04-17T17:29:33.076989+00:00 app[web.1]: async for chunk in self.body_iterator: 2026-04-17T17:29:33.076989+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/starlette/middleware/base.py", line 56, in body_stream 2026-04-17T17:29:33.076989+00:00 app[web.1]: task.result() 2026-04-17T17:29:33.076990+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/starlette/middleware/base.py", line 38, in coro 2026-04-17T17:29:33.076990+00:00 app[web.1]: await self.app(scope, receive, send) 2026-04-17T17:29:33.076990+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/sentry_sdk/integrations/starlette.py", line 164, in _create_span_call 2026-04-17T17:29:33.076990+00:00 app[web.1]: return await old_call(app, scope, receive, send, **kwargs) 2026-04-17T17:29:33.076990+00:00 app[web.1]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2026-04-17T17:29:33.076991+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/otree/errorpage.py", line 247, in __call__ 2026-04-17T17:29:33.076991+00:00 app[web.1]: raise exc # from None 2026-04-17T17:29:33.077002+00:00 app[web.1]: ^^^^^^^^^ 2026-04-17T17:29:33.077002+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/otree/errorpage.py", line 227, in __call__ 2026-04-17T17:29:33.077003+00:00 app[web.1]: await self.app(scope, receive, _send) 2026-04-17T17:29:33.077003+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/sentry_sdk/integrations/starlette.py", line 164, in _create_span_call 2026-04-17T17:29:33.077003+00:00 app[web.1]: return await old_call(app, scope, receive, send, **kwargs) 2026-04-17T17:29:33.077003+00:00 app[web.1]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2026-04-17T17:29:33.077003+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/starlette/middleware/base.py", line 25, in __call__ 2026-04-17T17:29:33.077004+00:00 app[web.1]: response = await self.dispatch_func(request, self.call_next) 2026-04-17T17:29:33.077004+00:00 app[web.1]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2026-04-17T17:29:33.077004+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/otree/middleware.py", line 56, in dispatch 2026-04-17T17:29:33.077004+00:00 app[web.1]: response = await call_next(request) 2026-04-17T17:29:33.077005+00:00 app[web.1]: ^^^^^^^^^^^^^^^^^^^^^^^^ 2026-04-17T17:29:33.077005+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/starlette/middleware/base.py", line 45, in call_next 2026-04-17T17:29:33.077005+00:00 app[web.1]: task.result() 2026-04-17T17:29:33.077005+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/starlette/middleware/base.py", line 38, in coro 2026-04-17T17:29:33.077010+00:00 app[web.1]: await self.app(scope, receive, send) 2026-04-17T17:29:33.077010+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/sentry_sdk/integrations/starlette.py", line 164, in _create_span_call 2026-04-17T17:29:33.077010+00:00 app[web.1]: return await old_call(app, scope, receive, send, **kwargs) 2026-04-17T17:29:33.077010+00:00 app[web.1]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2026-04-17T17:29:33.077010+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/starlette/middleware/sessions.py", line 75, in __call__ 2026-04-17T17:29:33.077010+00:00 app[web.1]: await self.app(scope, receive, send_wrapper) 2026-04-17T17:29:33.077011+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/sentry_sdk/integrations/starlette.py", line 164, in _create_span_call 2026-04-17T17:29:33.077011+00:00 app[web.1]: return await old_call(app, scope, receive, send, **kwargs) 2026-04-17T17:29:33.077011+00:00 app[web.1]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2026-04-17T17:29:33.077012+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/otree/patch.py", line 41, in __call__ 2026-04-17T17:29:33.077012+00:00 app[web.1]: raise exc # from None 2026-04-17T17:29:33.077012+00:00 app[web.1]: ^^^^^^^^^ 2026-04-17T17:29:33.077013+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/otree/patch.py", line 29, in __call__ 2026-04-17T17:29:33.077013+00:00 app[web.1]: await self.app(scope, receive, sender) 2026-04-17T17:29:33.077013+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/starlette/routing.py", line 582, in __call__ 2026-04-17T17:29:33.077013+00:00 app[web.1]: await route.handle(scope, receive, send) 2026-04-17T17:29:33.077014+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/starlette/routing.py", line 243, in handle 2026-04-17T17:29:33.077014+00:00 app[web.1]: await self.app(scope, receive, send) 2026-04-17T17:29:33.077014+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/otree/views/abstract.py", line 122, in dispatch 2026-04-17T17:29:33.077015+00:00 app[web.1]: response = await run_in_threadpool(self.inner_dispatch, request) 2026-04-17T17:29:33.077015+00:00 app[web.1]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2026-04-17T17:29:33.077015+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/starlette/concurrency.py", line 40, in run_in_threadpool 2026-04-17T17:29:33.077015+00:00 app[web.1]: return await loop.run_in_executor(None, func, *args) 2026-04-17T17:29:33.077016+00:00 app[web.1]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2026-04-17T17:29:33.077016+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/concurrent/futures/thread.py", line 59, in run 2026-04-17T17:29:33.077016+00:00 app[web.1]: result = self.fn(*self.args, **self.kwargs) 2026-04-17T17:29:33.077017+00:00 app[web.1]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2026-04-17T17:29:33.077017+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/sentry_sdk/integrations/threading.py", line 179, in wrapped_fn 2026-04-17T17:29:33.077017+00:00 app[web.1]: return fn(*args, **kwargs) 2026-04-17T17:29:33.077017+00:00 app[web.1]: ^^^^^^^^^^^^^^^^^^^ 2026-04-17T17:29:33.077017+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/otree/views/abstract.py", line 465, in inner_dispatch 2026-04-17T17:29:33.077018+00:00 app[web.1]: return self.get() 2026-04-17T17:29:33.077018+00:00 app[web.1]: ^^^^^^^^^^ 2026-04-17T17:29:33.077018+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/otree/views/abstract.py", line 525, in get 2026-04-17T17:29:33.077018+00:00 app[web.1]: context = self.get_context_data(form=form) 2026-04-17T17:29:33.077018+00:00 app[web.1]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2026-04-17T17:29:33.077019+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/otree/views/abstract.py", line 201, in get_context_data 2026-04-17T17:29:33.077019+00:00 app[web.1]: js_vars = self.call_user_defined('js_vars') 2026-04-17T17:29:33.077019+00:00 app[web.1]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2026-04-17T17:29:33.077019+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/otree/views/abstract.py", line 92, in call_user_defined 2026-04-17T17:29:33.077020+00:00 app[web.1]: return getattr(type(self), method_name)(self.player, *args, **kwargs) 2026-04-17T17:29:33.077020+00:00 app[web.1]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2026-04-17T17:29:33.077020+00:00 app[web.1]: File "/app/Coop/__init__.py", line 832, in js_vars 2026-04-17T17:29:33.077020+00:00 app[web.1]: fleet_initial_quota=sum_fleet_quota(player), 2026-04-17T17:29:33.077021+00:00 app[web.1]: ^^^^^^^^^^^^^^^^^^^^^^^ 2026-04-17T17:29:33.077021+00:00 app[web.1]: File "/app/Coop/__init__.py", line 911, in sum_fleet_quota 2026-04-17T17:29:33.077021+00:00 app[web.1]: if p.c_role == 'Harvester': 2026-04-17T17:29:33.077021+00:00 app[web.1]: ^^^^^^^^ 2026-04-17T17:29:33.077022+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/otree/database.py", line 654, in __getattribute__ 2026-04-17T17:29:33.077022+00:00 app[web.1]: res = super().__getattribute__(attr) 2026-04-17T17:29:33.077022+00:00 app[web.1]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2026-04-17T17:29:33.077022+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/sqlalchemy/orm/attributes.py", line 294, in __get__ 2026-04-17T17:29:33.077022+00:00 app[web.1]: return self.impl.get(instance_state(instance), dict_) 2026-04-17T17:29:33.077022+00:00 app[web.1]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2026-04-17T17:29:33.077023+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/sqlalchemy/orm/attributes.py", line 725, in get 2026-04-17T17:29:33.077023+00:00 app[web.1]: value = state._load_expired(state, passive) 2026-04-17T17:29:33.077023+00:00 app[web.1]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2026-04-17T17:29:33.077023+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/sqlalchemy/orm/state.py", line 652, in _load_expired 2026-04-17T17:29:33.077023+00:00 app[web.1]: self.manager.deferred_scalar_loader(self, toload) 2026-04-17T17:29:33.077024+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.12/site-packages/sqlalchemy/orm/loading.py", line 942, in load_scalar_attributes 2026-04-17T17:29:33.077028+00:00 app[web.1]: raise orm_exc.DetachedInstanceError( 2026-04-17T17:29:33.077029+00:00 app[web.1]: sqlalchemy.orm.exc.DetachedInstanceError: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: http://sqlalche.me/e/13/bhk3) 2026-04-17T17:29:33.084805+00:00 app[web.1]: Error during __repr__ of Player: DetachedInstanceError('Instance is not bound to a Session; attribute refresh operation cannot proceed')