Using CPython 3.14.6 interpreter at: /usr/local/bin/python3 Creating virtual environment at: .venv Resolved 32 packages in 5.01s Building slices-monitor-test-runner @ file:///app Built slices-monitor-test-runner @ file:///app Prepared 1 package in 315ms warning: Failed to hardlink files; falling back to full copy. This may lead to degraded performance. If the cache and target directories are on different filesystems, hardlinking may not be supported. If this is intentional, set `export UV_LINK_MODE=copy` or use `--link-mode=copy` to suppress this warning. Installed 32 packages in 1.14s + annotated-types==0.8.0 + anyio==4.14.2 + authlib==1.7.2 + bcrypt==5.0.0 + certifi==2026.7.22 + cffi==2.1.0 + cryptography==49.0.0 + dnspython==2.8.0 + h11==0.16.0 + httpcore==1.0.9 + httpx==0.28.1 + httpx-oauth==0.17.0 + idna==3.18 + invoke==3.0.3 + joserfc==1.7.4 + msgspec==0.21.1 + packaging==26.2 + paramiko==4.0.0 + pycparser==3.0 + pydantic==2.13.4 + pydantic-core==2.46.4 + pyjwt==2.13.0 + pynacl==1.6.2 + pytz==2026.2 + pyyaml==6.0.3 + slices-clientlib-bi==5.1.2 + slices-clientlib-core==5.6.0 + slices-monitor-test-runner==0.1.dev187+g005dd054e (from file:///app) + tomli-w==1.2.0 + tomlkit==0.15.1 + typing-extensions==4.16.0 + typing-inspection==0.4.2 Run Test: slices-core-health-check 2026-07-24 15:17:58.815004 UTC - Check DNS 2026-07-24 15:17:58.860343 UTC - Checking system DNS for API host expauth.ilabt.imec.be 2026-07-24 15:17:58.860695 UTC - Resolved to 193.191.148.201 2026-07-24 15:17:58.860765 UTC - Checking direct DNS for API host expauth.ilabt.imec.be using DNS server 8.8.8.8 2026-07-24 15:17:58.872601 UTC - Resolved to 193.191.148.201 2026-07-24 15:17:58.872678 UTC - Checking direct DNS for API host expauth.ilabt.imec.be using DNS server 1.1.1.1 2026-07-24 15:17:58.882746 UTC - Resolved to 193.191.148.201 2026-07-24 15:17:58.882850 UTC - Checking system DNS for API host pubkey.ilabt.imec.be 2026-07-24 15:17:58.883127 UTC - Resolved to 193.191.148.201 2026-07-24 15:17:58.883162 UTC - Checking direct DNS for API host pubkey.ilabt.imec.be using DNS server 8.8.8.8 2026-07-24 15:17:58.906565 UTC - Resolved to 193.191.148.201 2026-07-24 15:17:58.906651 UTC - Checking direct DNS for API host pubkey.ilabt.imec.be using DNS server 1.1.1.1 2026-07-24 15:17:58.918748 UTC - Resolved to 193.191.148.201 2026-07-24 15:17:58.918883 UTC - Check Basic Connectivity 2026-07-24 15:17:58.919609 UTC - Checking basic connectivity to experiment API 2026-07-24 15:17:58.919655 UTC - Connecting to: https://expauth.ilabt.imec.be 2026-07-24 15:17:58.927640 UTC - HTTP connection works. HTTP response code: 404 2026-07-24 15:17:58.927705 UTC - Checking basic connectivity to pubkey API 2026-07-24 15:17:58.927724 UTC - Connecting to: https://pubkey.ilabt.imec.be 2026-07-24 15:17:58.934181 UTC - HTTP connection works. HTTP response code: 404 2026-07-24 15:17:58.934266 UTC - Check List Public Keys Failed to exchange token due to HTTP_400_BAD_REQUEST. DEBUG INFO: now: 2026-07-24T15:17:58.956856+00:00 data sent: { "grant_type": "urn:ietf:params:oauth:grant-type:token-exchange", "subject_token": "eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImVjMSJ9.eyJpc3MiOiJodHRwczovL2FjY291bnQuaWxhYnQuaW1lYy5iZSIsImF1ZCI6Imh0dHBzOi8vY2xpLnNsaWNlcy1yaS5ldSIsImlhdCI6MTc4NDkwNDM0OCwiZXhwIjoxNzg0OTA3OTQ4LCJhdXRoX3RpbWUiOjE3ODQ5MDQzNDgsInN1YiI6InVzZXJfYWNjb3VudC5pbGFidC5pbWVjLmJlXzRuNGt3NzlicmM5OXZhNTlqa2E2dGpxZDhmIiwic2NvcGUiOiJvcGVuaWQgdXNlcmluZm8gcHJvamVjdHMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJ3dmRlbWVlciIsImp0aSI6IlIybmdoRnM0eFJIOXlIQmIxYWdzMUk1VmZLcURxRE9qIn0.8YNykagB4t4Uj9CMGp5h61TkEoettGLZgqWjtNt0SLcXY_dC4cJmy00F7FMLqejfamkjahxQcIfUsDSCWPRUfQ", "subject_token_type": "urn:ietf:params:oauth:token-type:access_token", "client_id": "IH56QyF0MWbhCPA8IIef7MTm", "client_secret": "rEn14uIa0JEBfWMjJdvj5py0xaKHEfQJ6TNHYPrULLnwRczo", "requested_token_type": "urn:ietf:params:oauth:token-type:access_token", "audience": "https://pubkey.ilabt.imec.be", "scope": "openid userinfo projects" } response: b'{"error": "invalid_grant", "error_description": "Could not validate subject token"}' 2026-07-24 15:17:58.960162 UTC - Error in test step 'List Public Keys': Client error '400 BAD REQUEST' for url 'https://portal.slices-ri.eu/oauth/token' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 2026-07-24 15:17:58.960294 UTC - Response content: {"error": "invalid_grant", "error_description": "Could not validate subject token"} ERROR:slices_monitor_test_runner.main:Test Failed with exception Traceback (most recent call last): File "/app/src/slices_monitor_test_runner/test_runners/test_runner_base.py", line 170, in step yield File "/app/src/slices_monitor_test_runner/test_runners/slices_core_health_check.py", line 107, in run self._check_pubkeys() ~~~~~~~~~~~~~~~~~~~^^ File "/app/src/slices_monitor_test_runner/test_runners/slices_core_health_check.py", line 64, in _check_pubkeys pubkeys = list(self._client().public_key.list_for_user(self.test_user_id)) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^ File "/app/.venv/lib/python3.14/site-packages/slices_clientlib_core/pubkey.py", line 71, in list_for_user return PagedCollection("public_key", PublicKey, f"{self.API_BASE_PATH}user/{user_id}", self._client) File "/app/.venv/lib/python3.14/site-packages/slices_clientlib_core/util/pagination.py", line 84, in __init__ response = self._client.get(url, params=params) File "/app/.venv/lib/python3.14/site-packages/httpx/_client.py", line 1053, in get return self.request( ~~~~~~~~~~~~^ "GET", ^^^^^^ ...<7 lines>... extensions=extensions, ^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "/app/.venv/lib/python3.14/site-packages/httpx/_client.py", line 825, in request return self.send(request, auth=auth, follow_redirects=follow_redirects) ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/.venv/lib/python3.14/site-packages/httpx/_client.py", line 914, in send response = self._send_handling_auth( request, ...<2 lines>... history=[], ) File "/app/.venv/lib/python3.14/site-packages/httpx/_client.py", line 939, in _send_handling_auth request = next(auth_flow) File "/app/.venv/lib/python3.14/site-packages/httpx/_auth.py", line 75, in sync_auth_flow request = next(flow) File "/app/.venv/lib/python3.14/site-packages/slices_clientlib_core/client.py", line 96, in auth_flow self._token_for_audience = get_access_token_for_audience(auth_token, self.target_audience, self.project_id) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/.venv/lib/python3.14/site-packages/slices_clientlib_core/oauth2/token_exchange.py", line 116, in get_access_token_for_audience response.raise_for_status() ~~~~~~~~~~~~~~~~~~~~~~~~~^^ File "/app/.venv/lib/python3.14/site-packages/httpx/_models.py", line 829, in raise_for_status raise HTTPStatusError(message, request=request, response=self) httpx.HTTPStatusError: Client error '400 BAD REQUEST' for url 'https://portal.slices-ri.eu/oauth/token' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/app/src/slices_monitor_test_runner/main.py", line 76, in run_test return _get_test_by_test_spec(steps, test_dir, test_spec).run() ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^ File "/app/src/slices_monitor_test_runner/test_runners/slices_core_health_check.py", line 103, in run with self.step( ~~~~~~~~~^ "List Public Keys", ^^^^^^^^^^^^^^^^^^^ description="Requesting public keys using Slices Core API", ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ): ^ File "/usr/local/lib/python3.14/contextlib.py", line 162, in __exit__ self.gen.throw(value) ~~~~~~~~~~~~~~^^^^^^^ File "/app/src/slices_monitor_test_runner/test_runners/test_runner_base.py", line 214, in step raise SlicesTestFailure(f"Step {name!r} {retry_suffix2} failed") from e slices_monitor_test_runner.exceptions.SlicesTestFailure: Step 'List Public Keys' failed