CI infrastructure classification: worker evidence¶
Task: e12c995f-f93f-4d6a-84bb-b277467b8927, frozen version 2.
Execution: 8687d300-d4bc-428e-ac42-42ae6444646e.
Repository: h8v6/heyaira; branch: heyaira/e12c995f.
Source and starting base: 9375461bcbc30f4658b33eb8b3260f108bc6d06b.
Implementation checkpoint: d9fff0726460d311f353b982b12372fa574961be, whose parent is the source commit.
Delivery commits affect only this evidence file; the final SHA is in the execution's RESULT/receipt.
Subagents used: none. Publication, independent acceptance and the full suite remain with Bridge/CI.
The defect was that a failed CI run was treated as a candidate failure even when the attempt's structured jobs proved a runner/container failure. Classification now belongs to the follow-up, is immutable per recorded run state, and excludes infrastructure from correction feedback without spending a work attempt. Transient jobs lookups leave the state unclassified and wait for another poll. Infrastructure keeps the existing failed-check notification and ends with the existing unfinished notification if the schedule expires.
Execution setup¶
Commands ran in
/Users/jablonskib/HeyAira-agents/.heyaira-worktrees/heyaira/e12c995f-worker,
unless the isolated base archive is named below. Python was the existing
Python 3.12.7. TMPDIR="$PWD/.work-tmp" supplied writable temporary storage.
The existing scripts/test_postgres.py validated the prepared local maintenance
database, created random disposable databases over its Unix socket, and removed
them. No dependency installation or production database mutation occurred.
Database URLs and credentials are deliberately omitted.
server_identity matched the supplied resource, instance and project, and
task_get(task_id, version=2) returned the exact four frozen criteria and
h8v6/heyaira. The initial Git reads reported a clean worktree, origin
[email protected]:h8v6/heyaira.git, branch heyaira/e12c995f, and HEAD equal to
the source SHA. The work contract's Bridge exception applies: no claim,
status/acceptance update, or interactive continuity call.
/usr/bin/git initially emitted denied Xcode cache-write diagnostics. Git
reads/writes used the already available
/Library/Developer/CommandLineTools/usr/bin/git; no permissions changed.
The implementation commit succeeded (exit 0) despite a nonfatal automatic
maintenance attempt to create the denied shared packed-refs.lock. Subsequent
commit commands disable automatic maintenance for that invocation.
K1: targeted regressions¶
Frozen method:
python scripts/test_postgres.py <new/changed test files> -p no:cacheprovider on HEAD and on an isolated 9375461 archive with the new tests applied.
The base archive was created with:
git archive 9375461 -o .work-tmp/base.tar
mkdir -p .work-tmp/base
tar -xf .work-tmp/base.tar -C .work-tmp/base
cp tests/test_ci_infrastructure.py tests/test_ci_correction.py tests/test_ci_failures.py tests/test_task_ci_failures.py tests/test_git_provider.py tests/test_server_checks.py .work-tmp/base/tests/
TMPDIR="$PWD/.work-tmp" python .work-tmp/base/scripts/test_postgres.py tests/test_ci_infrastructure.py -k 'B2 or B3 or B4_d or B5 or B6' -p no:cacheprovider --tb=short
The archive has the base implementation and migrations, with only the current
test files applied. The runner executes pytest in .work-tmp/base.
Exit 1: 6 failed, 8 deselected, zero skips. Every failure is a behavioral
assertion; no import, compile or missing-table error was used as regression
evidence. B2, both B4(d) cases, B5 and B6 assert phase == done and
work_count == 1 before inspecting the new table; base instead returns
phase == queued. B3 expects only Lint in correction findings and base
returns ['Lint', 'CI']. The full failing output is retained below.
At implementation HEAD d9fff0726460d311f353b982b12372fa574961be:
TMPDIR="$PWD/.work-tmp" python scripts/test_postgres.py tests/test_ci_infrastructure.py tests/test_ci_failures.py tests/test_git_provider.py tests/test_task_ci_failures.py -k 'B1 or B2 or B3 or B4 or B5 or B6 or B7 or B8 or B9 or B10 or workflow_runs_of_a_commit' -p no:cacheprovider -vv
Exit 0: 50 passed, 46 deselected, zero skips;
postgres_acceptance=passed: selected tests, zero skipped tests.
| Required check | Base observation | Implementation HEAD |
|---|---|---|
| B1 | Not selected on base | 23 classifier cases passed |
| B2 | Incorrectly queued correction | Passed; one row/history/push across redelivery; one jobs read; schedule continues |
| B3 | Infrastructure included in correction | Passed; only Lint feedback; one row per run |
| B4(a-c) | Not selected on base | All 3 passed; unknown classifications preserve correction |
| B4(d), unavailable | Incorrectly queued correction | Passed; no row/history/decision on transient error; retry classifies infrastructure |
| B4(d), timeout | Incorrectly queued correction | Passed; same behavior after a 0.2-second request timeout |
| B5 | Incorrectly queued correction before schedule could expire | Passed; unfinished reason names infrastructure/run 1400; one unfinished push; task stays done |
| B6 | Attempt 2 incorrectly queued correction | Passed; reads attempt 2 then 3; infrastructure holds, code requests one correction |
| B7 | Not selected on base | Passed; running rerun holds old failure; completed code rerun corrects |
| B8 | Not selected on base | 10 attempt-provider cases plus run-metadata preservation passed |
| B9 | Not selected on base | All 4 live MCP diagnostics cases passed |
| B10 | Not selected on base | Both newer-pass and missing-update-time cases passed |
The K2 run also includes two additional regressions: a fourth unclassified workflow waits behind the per-poll limit, and concurrent classifiers fetch without holding task/workflow locks and commit only one bounded, redacted history entry.
criterion_id: K1 outcome: pass evidence_path: docs/reports/e12c995f-ci-infrastructure-evidence.md feedback: Base exit 1 with six asserted behavioral failures; committed implementation HEAD exit 0 with 50 targeted passes and zero skips.
K2: change-area and permitted sandbox checks¶
Frozen method (also the main command actually run):
python scripts/test_postgres.py tests/test_ci_infrastructure.py tests/test_ci_correction.py tests/test_task_ci.py tests/test_task_ci_failures.py tests/test_ci_failures.py tests/test_git_provider.py tests/test_schema_guard.py tests/test_notification_docs_contract.py tests/test_docs_contract.py -p no:cacheprovider
python -m pytest tests/test_ci_follow_up.py -p no:cacheprovider -rs
python -m pytest tests/test_ci_correction_capacity.py -p no:cacheprovider -rs
The main command used the writable TMPDIR described above. Before the checkpoint
it exited 0 with 200 passed, zero skips and the runner's zero-skip acceptance
message. On committed implementation HEAD d9fff0726460d311f353b982b12372fa574961be
it again exited 0: 200 passed in 129.21s, zero skips;
postgres_acceptance=passed: selected tests, zero skipped tests.
The two standalone pytest commands initially exited 2 with
ModuleNotFoundError: No module named 'heyaira' during collection (zero tests).
Those runs are not counted as passes. They were then rerun separately with
PYTHONPATH=src and an isolated disposable HEYAIRA_EXECUTION_E2E_DATABASE_URL.
Preparation used the existing runner's URL normalization/database-name helpers
and asyncpg: create one random heyaira_test_<uuid> database per invocation,
run exactly [python, -m, pytest, <file>, -p, no:cacheprovider, -rs] in the
subprocess, then drop only that database in finally. No URL was printed.
test_ci_follow_up.py: exit 0; 0 passed, 27 skipped.test_ci_correction_capacity.py: exit 0; 0 passed, 5 skipped.- Every skip reports
listening sockets are not permitted here (agent sandbox); runs in CI. test_backup_state_marker.py: not run, as frozen K2 requires, because its cleanup needs unavailable database privileges. ReadingMARKER_TABLESwithrg -n 'task_workflow_ci_classifications' tests/test_backup_state_marker.pyexited 0 and returned97: "task_workflow_ci_classifications",inside that set.- The full suite was not run; CI judges it.
The shared run-list fixture in tests/test_ci_correction.py now lists the
webhook's stored authoritative states without run_attempt; the follow-up
stores unknown classifications and preserves the existing correction behavior.
The affected signed-webhook/follow-up tests are listed explicitly below. Their
assertions remain intact; all passed in the main check:
test_an_older_failure_redelivered_after_a_successful_rerun_changes_nothing
test_a_rerun_that_fails_again_after_publication_is_acted_on
test_two_ci_workflows_with_the_same_name_are_ordered_apart
test_a_legacy_entry_of_a_passing_rerun_still_hides_the_older_failure
test_a_delayed_older_failure_is_superseded_by_a_legacy_entry_of_a_newer_run
test_an_unresolvable_legacy_entry_never_acts_and_never_supersedes
test_a_legacy_entry_written_late_does_not_supersede_a_later_failure_of_its_run
test_an_authoritative_failure_is_never_taken_for_a_legacy_entry
test_a_redelivered_state_of_a_run_with_only_a_legacy_entry_corrects_once
test_a_ci_correction_says_the_candidate_is_published_and_must_not_be_rewritten
test_a_pull_request_whose_head_is_not_the_task_branch_is_never_advertised_as_published
test_a_newer_run_that_did_not_conclude_hides_an_older_failure_from_a_manual_retry
test_the_webhook_never_asks_github_and_leaves_the_failure_to_the_follow_up
test_a_run_from_a_fork_on_the_same_commit_is_never_recorded
criterion_id: K2 outcome: pass evidence_path: docs/reports/e12c995f-ci-infrastructure-evidence.md feedback: Main change-area check has 200 passes and zero skips; standalone checks report the specifically permitted 27/5 listener skips; backup marker checked by reading only; full suite left to CI.
K3: contracts and whitespace¶
At the implementation checkpoint, each command exited 0:
$ PYTHONPATH=src python scripts/export_mcp_contract.py --check
MCP contract is up to date
$ PYTHONPATH=src python scripts/check_docs_contract.py
documentation contract passed: 49 MCP tools covered
$ git diff --check
(no output)
criterion_id: K3 outcome: pass evidence_path: docs/reports/e12c995f-ci-infrastructure-evidence.md feedback: MCP and docs contract checks exit 0; whitespace check exits 0 without output.
K4: scope and ancestry¶
At implementation HEAD, git diff --name-only 9375461..HEAD exited 0 and listed:
.github/workflows/ci.yml
contracts/mcp-tools.json
docs/concepts/task-version-execution.md
docs/reference/mcp-tools.md
migrations/063_ci_run_classifications.sql
src/heyaira/ci_failures.py
src/heyaira/git_provider.py
src/heyaira/server.py
src/heyaira/workflow.py
tests/test_backup_state_marker.py
tests/test_ci_correction.py
tests/test_ci_failures.py
tests/test_ci_infrastructure.py
tests/test_git_provider.py
tests/test_server_checks.py
tests/test_task_ci_failures.py
The delivery adds only this file under the allowed docs/ prefix.
git merge-base --is-ancestor 9375461bcbc30f4658b33eb8b3260f108bc6d06b HEAD
exited 0 (no output); git log -1 --format='%H %P' identified the checkpoint's
parent as that exact base. No earlier commit was amended, reset or rebased.
criterion_id: K4 outcome: pass evidence_path: docs/reports/e12c995f-ci-infrastructure-evidence.md feedback: Only authorized paths differ from the source; the source is an ancestor. Final delivery scope/parent/clean-tree reads are appended to RESULT after the evidence commit.
Actual test output¶
Trailing whitespace is stripped from pytest assertion separator lines. A stronger
final git diff --check 9375461..HEAD initially identified six such lines in the
copied output (exit 2); the evidence-only follow-up removes them, without
changing code, tests, assertions or counts.
Base regression output (exit 1)¶
FFFFFF [100%]
=================================== FAILURES ===================================
_ test_B2_infrastructure_is_durable_once_and_stays_unsettled[execution_server0] _
tests/test_ci_infrastructure.py:101: in test_B2_infrastructure_is_durable_once_and_stays_unsettled
unchanged(w)
tests/test_ci_infrastructure.py:91: in unchanged
assert w["phase"] == "done" and w["work_count"] == 1, "infrastructure/unclassified CI must not request a correction"
E AssertionError: infrastructure/unclassified CI must not request a correction
E assert ('queued' == 'done'
E
E - done
E + queued)
------------------------------ Captured log setup ------------------------------
WARNING heyaira.client_source:client_source.py:165 client_source_unattributed: a proxied request carried no public client address
_________ test_B3_mixed_workflows_correct_only_code[execution_server0] _________
tests/test_ci_infrastructure.py:131: in test_B3_mixed_workflows_correct_only_code
assert [i["workflow_name"] for i in findings] == ["Lint"], "infrastructure must be omitted from correction findings"
E AssertionError: infrastructure must be omitted from correction findings
E assert ['Lint', 'CI'] == ['Lint']
E
E Left contains one more item: 'CI'
E Use -v to get more diff
___ test_B4_d_transient_waits_then_classifies[unavailable-execution_server0] ___
tests/test_ci_infrastructure.py:176: in test_B4_d_transient_waits_then_classifies
unchanged(await f.get())
tests/test_ci_infrastructure.py:91: in unchanged
assert w["phase"] == "done" and w["work_count"] == 1, "infrastructure/unclassified CI must not request a correction"
E AssertionError: infrastructure/unclassified CI must not request a correction
E assert ('queued' == 'done'
E
E - done
E + queued)
_____ test_B4_d_transient_waits_then_classifies[timeout-execution_server0] _____
tests/test_ci_infrastructure.py:176: in test_B4_d_transient_waits_then_classifies
unchanged(await f.get())
tests/test_ci_infrastructure.py:91: in unchanged
assert w["phase"] == "done" and w["work_count"] == 1, "infrastructure/unclassified CI must not request a correction"
E AssertionError: infrastructure/unclassified CI must not request a correction
E assert ('queued' == 'done'
E
E - done
E + queued)
______ test_B5_infrastructure_schedule_ends_unfinished[execution_server0] ______
tests/test_ci_infrastructure.py:190: in test_B5_infrastructure_schedule_ends_unfinished
unchanged(await f.get())
tests/test_ci_infrastructure.py:91: in unchanged
assert w["phase"] == "done" and w["work_count"] == 1, "infrastructure/unclassified CI must not request a correction"
E AssertionError: infrastructure/unclassified CI must not request a correction
E assert ('queued' == 'done'
E
E - done
E + queued)
_______ test_B6_rerun_jobs_are_bound_to_each_attempt[execution_server0] ________
tests/test_ci_infrastructure.py:208: in test_B6_rerun_jobs_are_bound_to_each_attempt
unchanged(await f.get())
tests/test_ci_infrastructure.py:91: in unchanged
assert w["phase"] == "done" and w["work_count"] == 1, "infrastructure/unclassified CI must not request a correction"
E AssertionError: infrastructure/unclassified CI must not request a correction
E assert ('queued' == 'done'
E
E - done
E + queued)
=========================== short test summary info ============================
FAILED tests/test_ci_infrastructure.py::test_B2_infrastructure_is_durable_once_and_stays_unsettled[execution_server0]
FAILED tests/test_ci_infrastructure.py::test_B3_mixed_workflows_correct_only_code[execution_server0]
FAILED tests/test_ci_infrastructure.py::test_B4_d_transient_waits_then_classifies[unavailable-execution_server0]
FAILED tests/test_ci_infrastructure.py::test_B4_d_transient_waits_then_classifies[timeout-execution_server0]
FAILED tests/test_ci_infrastructure.py::test_B5_infrastructure_schedule_ends_unfinished[execution_server0]
FAILED tests/test_ci_infrastructure.py::test_B6_rerun_jobs_are_bound_to_each_attempt[execution_server0]
6 failed, 8 deselected in 7.75s
K1 at implementation HEAD (exit 0)¶
============================= test session starts ==============================
platform darwin -- Python 3.12.7, pytest-9.1.1, pluggy-1.6.0 -- /Users/jablonskib/.local/share/mise/installs/python/3.12.7/bin/python
rootdir: /Users/jablonskib/HeyAira-agents/.heyaira-worktrees/heyaira/e12c995f-worker
configfile: pyproject.toml
plugins: asyncio-1.4.0, anyio-4.15.1
asyncio: mode=Mode.AUTO, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
collecting ... collected 96 items / 46 deselected / 50 selected
tests/test_ci_infrastructure.py::test_B2_infrastructure_is_durable_once_and_stays_unsettled[execution_server0] PASSED [ 2%]
tests/test_ci_infrastructure.py::test_B3_mixed_workflows_correct_only_code[execution_server0] PASSED [ 4%]
tests/test_ci_infrastructure.py::test_B4_abc_unknown_preserves_correction[no_attempt-execution_server0] PASSED [ 6%]
tests/test_ci_infrastructure.py::test_B4_abc_unknown_preserves_correction[forbidden-execution_server0] PASSED [ 8%]
tests/test_ci_infrastructure.py::test_B4_abc_unknown_preserves_correction[incomplete-execution_server0] PASSED [ 10%]
tests/test_ci_infrastructure.py::test_B4_d_transient_waits_then_classifies[unavailable-execution_server0] PASSED [ 12%]
tests/test_ci_infrastructure.py::test_B4_d_transient_waits_then_classifies[timeout-execution_server0] PASSED [ 14%]
tests/test_ci_infrastructure.py::test_B5_infrastructure_schedule_ends_unfinished[execution_server0] PASSED [ 16%]
tests/test_ci_infrastructure.py::test_B6_rerun_jobs_are_bound_to_each_attempt[execution_server0] PASSED [ 18%]
tests/test_ci_infrastructure.py::test_B7_running_rerun_holds_old_failure[execution_server0] PASSED [ 20%]
tests/test_ci_infrastructure.py::test_B10_newer_pass_settles_old_infrastructure[execution_server0] PASSED [ 22%]
tests/test_ci_infrastructure.py::test_B10_missing_time_keeps_legacy_correction_and_classifies_others[execution_server0] PASSED [ 24%]
tests/test_ci_failures.py::test_B1_classify_run[jobs0-True-infrastructure] PASSED [ 26%]
tests/test_ci_failures.py::test_B1_classify_run[jobs1-True-infrastructure] PASSED [ 28%]
tests/test_ci_failures.py::test_B1_classify_run[jobs2-True-infrastructure] PASSED [ 30%]
tests/test_ci_failures.py::test_B1_classify_run[jobs3-True-code] PASSED [ 32%]
tests/test_ci_failures.py::test_B1_classify_run[jobs4-True-code] PASSED [ 34%]
tests/test_ci_failures.py::test_B1_classify_run[jobs5-True-code] PASSED [ 36%]
tests/test_ci_failures.py::test_B1_classify_run[jobs6-True-code] PASSED [ 38%]
tests/test_ci_failures.py::test_B1_classify_run[jobs7-True-code] PASSED [ 40%]
tests/test_ci_failures.py::test_B1_classify_run[jobs8-True-infrastructure] PASSED [ 42%]
tests/test_ci_failures.py::test_B1_classify_run[jobs9-True-code] PASSED [ 44%]
tests/test_ci_failures.py::test_B1_classify_run[jobs10-True-code] PASSED [ 46%]
tests/test_ci_failures.py::test_B1_classify_run[jobs11-True-code] PASSED [ 48%]
tests/test_ci_failures.py::test_B1_classify_run[jobs12-True-infrastructure] PASSED [ 50%]
tests/test_ci_failures.py::test_B1_classify_run[jobs13-False-unknown] PASSED [ 52%]
tests/test_ci_failures.py::test_B1_classify_run[jobs14-True-code] PASSED [ 54%]
tests/test_ci_failures.py::test_B1_job_conclusions[success-passed] PASSED [ 56%]
tests/test_ci_failures.py::test_B1_job_conclusions[neutral-passed] PASSED [ 58%]
tests/test_ci_failures.py::test_B1_job_conclusions[skipped-passed] PASSED [ 60%]
tests/test_ci_failures.py::test_B1_job_conclusions[cancelled-code] PASSED [ 62%]
tests/test_ci_failures.py::test_B1_job_conclusions[timed_out-code] PASSED [ 64%]
tests/test_ci_failures.py::test_B1_job_conclusions[action_required-code] PASSED [ 66%]
tests/test_ci_failures.py::test_B1_job_conclusions[None-code] PASSED [ 68%]
tests/test_ci_failures.py::test_B1_job_conclusions[unexpected-code] PASSED [ 70%]
tests/test_git_provider.py::test_workflow_runs_of_a_commit_return_only_run_metadata PASSED [ 72%]
tests/test_git_provider.py::test_B8_attempt_jobs_path_shape_and_completeness[6-6-True] PASSED [ 74%]
tests/test_git_provider.py::test_B8_attempt_jobs_path_shape_and_completeness[120-100-False] PASSED [ 76%]
tests/test_git_provider.py::test_B8_attempt_jobs_path_shape_and_completeness[None-6-False] PASSED [ 78%]
tests/test_git_provider.py::test_B8_attempt_jobs_path_shape_and_completeness[6-6-False] PASSED [ 80%]
tests/test_git_provider.py::test_B8_attempt_jobs_path_shape_and_completeness[True-1-False] PASSED [ 82%]
tests/test_git_provider.py::test_B8_attempt_jobs_reject_invalid_attempt[0] PASSED [ 84%]
tests/test_git_provider.py::test_B8_attempt_jobs_reject_invalid_attempt[2] PASSED [ 86%]
tests/test_git_provider.py::test_B8_attempt_jobs_reject_invalid_attempt[True] PASSED [ 88%]
tests/test_git_provider.py::test_B8_attempt_jobs_reject_invalid_attempt[None] PASSED [ 90%]
tests/test_git_provider.py::test_B8_attempt_jobs_reject_invalid_attempt[-1] PASSED [ 92%]
tests/test_task_ci_failures.py::test_B9_live_diagnostics_bind_jobs_to_listed_attempt[jobs0-True-infrastructure-execution_server0] PASSED [ 94%]
tests/test_task_ci_failures.py::test_B9_live_diagnostics_bind_jobs_to_listed_attempt[jobs1-True-code-execution_server0] PASSED [ 96%]
tests/test_task_ci_failures.py::test_B9_live_diagnostics_bind_jobs_to_listed_attempt[jobs2-False-unknown-execution_server0] PASSED [ 98%]
tests/test_task_ci_failures.py::test_B9_without_attempt_uses_legacy_jobs_unknown[execution_server0] PASSED [100%]
- generated xml file: /Users/jablonskib/HeyAira-agents/.heyaira-worktrees/heyaira/e12c995f-worker/.work-tmp/heyaira-pytest-l_2hn123/results.xml -
====================== 50 passed, 46 deselected in 21.47s ======================
postgres_acceptance=passed: selected tests, zero skipped tests
K2 at implementation HEAD (exit 0)¶
........................................................................ [ 36%]
........................................................................ [ 72%]
........................................................ [100%]
200 passed in 129.21s (0:02:09)
postgres_acceptance=passed: selected tests, zero skipped tests
Standalone follow-up check with prepared environment (exit 0)¶
============================= test session starts ==============================
platform darwin -- Python 3.12.7, pytest-9.1.1, pluggy-1.6.0
rootdir: /Users/jablonskib/HeyAira-agents/.heyaira-worktrees/heyaira/e12c995f-worker
configfile: pyproject.toml
plugins: asyncio-1.4.0, anyio-4.15.1
asyncio: mode=Mode.AUTO, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
collected 27 items
tests/test_ci_follow_up.py sssssssssssssssssssssssssss [100%]
=========================== short test summary info ============================
SKIPPED [1] tests/test_ci_follow_up.py:65: listening sockets are not permitted here (agent sandbox); runs in CI
SKIPPED [1] tests/test_ci_follow_up.py:86: listening sockets are not permitted here (agent sandbox); runs in CI
SKIPPED [1] tests/test_ci_follow_up.py:101: listening sockets are not permitted here (agent sandbox); runs in CI
SKIPPED [1] tests/test_ci_follow_up.py:119: listening sockets are not permitted here (agent sandbox); runs in CI
SKIPPED [1] tests/test_ci_follow_up.py:142: listening sockets are not permitted here (agent sandbox); runs in CI
SKIPPED [1] tests/test_ci_follow_up.py:159: listening sockets are not permitted here (agent sandbox); runs in CI
SKIPPED [1] tests/test_ci_follow_up.py:178: listening sockets are not permitted here (agent sandbox); runs in CI
SKIPPED [1] tests/test_ci_follow_up.py:191: listening sockets are not permitted here (agent sandbox); runs in CI
SKIPPED [1] tests/test_ci_follow_up.py:211: listening sockets are not permitted here (agent sandbox); runs in CI
SKIPPED [1] tests/test_ci_follow_up.py:225: listening sockets are not permitted here (agent sandbox); runs in CI
SKIPPED [1] tests/test_ci_follow_up.py:236: listening sockets are not permitted here (agent sandbox); runs in CI
SKIPPED [1] tests/test_ci_follow_up.py:259: listening sockets are not permitted here (agent sandbox); runs in CI
SKIPPED [1] tests/test_ci_follow_up.py:282: listening sockets are not permitted here (agent sandbox); runs in CI
SKIPPED [1] tests/test_ci_follow_up.py:320: listening sockets are not permitted here (agent sandbox); runs in CI
SKIPPED [1] tests/test_ci_follow_up.py:369: listening sockets are not permitted here (agent sandbox); runs in CI
SKIPPED [2] tests/test_ci_follow_up.py:407: listening sockets are not permitted here (agent sandbox); runs in CI
SKIPPED [1] tests/test_ci_follow_up.py:427: listening sockets are not permitted here (agent sandbox); runs in CI
SKIPPED [1] tests/test_ci_follow_up.py:467: listening sockets are not permitted here (agent sandbox); runs in CI
SKIPPED [1] tests/test_ci_follow_up.py:478: listening sockets are not permitted here (agent sandbox); runs in CI
SKIPPED [1] tests/test_ci_follow_up.py:499: listening sockets are not permitted here (agent sandbox); runs in CI
SKIPPED [1] tests/test_ci_follow_up.py:517: listening sockets are not permitted here (agent sandbox); runs in CI
SKIPPED [1] tests/test_ci_follow_up.py:532: listening sockets are not permitted here (agent sandbox); runs in CI
SKIPPED [1] tests/test_ci_follow_up.py:561: listening sockets are not permitted here (agent sandbox); runs in CI
SKIPPED [1] tests/test_ci_follow_up.py:586: listening sockets are not permitted here (agent sandbox); runs in CI
SKIPPED [1] tests/test_ci_follow_up.py:619: listening sockets are not permitted here (agent sandbox); runs in CI
SKIPPED [1] tests/test_ci_follow_up.py:645: listening sockets are not permitted here (agent sandbox); runs in CI
============================= 27 skipped in 1.52s ==============================
Standalone correction-capacity check with prepared environment (exit 0)¶
============================= test session starts ==============================
platform darwin -- Python 3.12.7, pytest-9.1.1, pluggy-1.6.0
rootdir: /Users/jablonskib/HeyAira-agents/.heyaira-worktrees/heyaira/e12c995f-worker
configfile: pyproject.toml
plugins: asyncio-1.4.0, anyio-4.15.1
asyncio: mode=Mode.AUTO, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
collected 5 items
tests/test_ci_correction_capacity.py sssss [100%]
=========================== short test summary info ============================
SKIPPED [1] tests/test_ci_correction_capacity.py:33: listening sockets are not permitted here (agent sandbox); runs in CI
SKIPPED [1] tests/test_ci_correction_capacity.py:71: listening sockets are not permitted here (agent sandbox); runs in CI
SKIPPED [1] tests/test_ci_correction_capacity.py:89: listening sockets are not permitted here (agent sandbox); runs in CI
SKIPPED [1] tests/test_ci_correction_capacity.py:147: listening sockets are not permitted here (agent sandbox); runs in CI
SKIPPED [1] tests/test_ci_correction_capacity.py:174: listening sockets are not permitted here (agent sandbox); runs in CI
============================== 5 skipped in 1.49s ==============================
Initial standalone follow-up collection failure (exit 2)¶
============================= test session starts ==============================
platform darwin -- Python 3.12.7, pytest-9.1.1, pluggy-1.6.0
rootdir: /Users/jablonskib/HeyAira-agents/.heyaira-worktrees/heyaira/e12c995f-worker
configfile: pyproject.toml
plugins: asyncio-1.4.0, anyio-4.15.1
asyncio: mode=Mode.AUTO, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
collected 0 items / 1 error
==================================== ERRORS ====================================
_________________ ERROR collecting tests/test_ci_follow_up.py __________________
ImportError while importing test module '/Users/jablonskib/HeyAira-agents/.heyaira-worktrees/heyaira/e12c995f-worker/tests/test_ci_follow_up.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
../../../../.local/share/mise/installs/python/3.12.7/lib/python3.12/importlib/__init__.py:90: in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tests/test_ci_follow_up.py:12: in <module>
from heyaira import workflow
E ModuleNotFoundError: No module named 'heyaira'
!!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!
=============================== 1 error in 0.51s ===============================
Initial standalone capacity collection failure (exit 2)¶
============================= test session starts ==============================
platform darwin -- Python 3.12.7, pytest-9.1.1, pluggy-1.6.0
rootdir: /Users/jablonskib/HeyAira-agents/.heyaira-worktrees/heyaira/e12c995f-worker
configfile: pyproject.toml
plugins: asyncio-1.4.0, anyio-4.15.1
asyncio: mode=Mode.AUTO, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
collected 0 items / 1 error
==================================== ERRORS ====================================
____________ ERROR collecting tests/test_ci_correction_capacity.py _____________
ImportError while importing test module '/Users/jablonskib/HeyAira-agents/.heyaira-worktrees/heyaira/e12c995f-worker/tests/test_ci_correction_capacity.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
../../../../.local/share/mise/installs/python/3.12.7/lib/python3.12/importlib/__init__.py:90: in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tests/test_ci_correction_capacity.py:8: in <module>
from heyaira import workflow
E ModuleNotFoundError: No module named 'heyaira'
!!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!
=============================== 1 error in 0.37s ===============================