RESULT: Server Beat pickup states and capacity¶
Task: 0a692b96-4bf3-48f8-ade2-ce0a74092a73, frozen version 2.
Execution: f51d22f0-117d-44fd-9da6-19b90bbbcb08.
Repository: h8v6/heyaira; branch: heyaira/0a692b96.
Source and starting base: 0bcb6a66ffa5a9857cf0d2ffc124573183a53622.
Implementation commit: 2ff858b599c4b5f9b4b7b3a7a86513a8ab0619e2.
The result commit adds this evidence above that implementation; its SHA is
recorded in the HeyAira RESULT receipt. No carried candidate was present.
Subagents: none. Publication and independent acceptance remain with Bridge.
Cause and change¶
The pickup probe recognized only paused, counted old offers even when the
Mac had no free slot, and did not prefer the pickup reason for stopped.
It now recognizes paused and exhausted stop signals, counts running
executions using the existing offered-execution identity join, and gates
offer-age alarms on reported_capacity(health). Stop signals still alarm at
full capacity. The existing safe reason filter handles pickup reasons for
paused, exhausted and stopped. The alert shape, threshold, effective
status and Bridge implementation are unchanged.
Files: src/heyaira/server_beat.py, tests/test_bridge_pickup.py,
docs/operations/bridge-request-failures.md, docs/SERVER_BEAT_LIMITS.md,
and this evidence file. Confidence in the focused behavior is high: the
registered probe ran against disposable real PostgreSQL databases.
Execution setup¶
The working tree started clean at the source SHA; origin was
[email protected]:h8v6/heyaira.git. All test commands used the already prepared
Python environment and test database connection. No dependencies were installed.
TMPDIR was set to the workspace's .work-evidence/tmp, since system temporary
directories are outside the sandbox. Git used the supplied Bridge task-bin
executable after the default macOS shim reported denied Xcode cache writes.
Git also warned that the global ignore file was unreadable. The implementation
commit succeeded despite denied automatic maintenance writes to
packed-refs.lock and the commit-graph directory; its SHA and parent were
read back. These warnings did not prevent the local commit or alter the patch.
K1 — pass¶
Method: python scripts/test_postgres.py tests/test_bridge_pickup.py -p no:cacheprovider
on an isolated 0bcb6a6 archive with the new tests and on HEAD.
The base archive was created with git archive 0bcb6a66ffa5a9857cf0d2ffc124573183a53622
under .work-evidence/base; only tests/test_bridge_pickup.py was replaced
with the new tests. No implementation files in that archive were changed.
| Frozen test | Base | Implementation HEAD |
|---|---|---|
T1 test_t1_exhausted_pickup_without_offers |
Failed: observed OK, expected FAIL |
Passed |
T2 test_t2_t3_offer_waits_for_capacity[T2-full] |
Failed: observed FAIL, expected OK |
Passed |
T3 test_t2_t3_offer_waits_for_capacity[T3-free] |
Passed | Passed |
T4 test_t4_stopped_pickup_reason_overrides_skip_reason |
Failed: observed repository_not_allowed, expected background disabled |
Passed |
T5 test_t5_paused_pickup_rfc3339_without_offers[T5-old] |
Passed | Passed |
T5 test_t5_paused_pickup_rfc3339_without_offers[T5-recent] |
Passed | Passed |
The first base run (the frozen regressions and existing tests) exited 1:
FAILED tests/test_bridge_pickup.py::test_t1_exhausted_pickup_without_offers
FAILED tests/test_bridge_pickup.py::test_t2_t3_offer_waits_for_capacity[T2-full]
FAILED tests/test_bridge_pickup.py::test_t4_stopped_pickup_reason_overrides_skip_reason
3 failed, 25 passed in 2.58s
The final base run included the supplementary boundary regressions; exit 1:
FAILED tests/test_bridge_pickup.py::test_t1_exhausted_pickup_without_offers
FAILED tests/test_bridge_pickup.py::test_t2_t3_offer_waits_for_capacity[T2-full]
FAILED tests/test_bridge_pickup.py::test_t4_stopped_pickup_reason_overrides_skip_reason
FAILED tests/test_bridge_pickup.py::test_stop_signal_alarms_even_at_capacity[exhausted]
FAILED tests/test_bridge_pickup.py::test_pickup_reason_fallback_does_not_use_skip_reason[None-exhausted]
FAILED tests/test_bridge_pickup.py::test_pickup_reason_fallback_does_not_use_skip_reason[None-stopped]
FAILED tests/test_bridge_pickup.py::test_pickup_reason_fallback_does_not_use_skip_reason[unsafe!reason-exhausted]
FAILED tests/test_bridge_pickup.py::test_pickup_reason_fallback_does_not_use_skip_reason[unsafe!reason-stopped]
8 failed, 32 passed in 4.05s
HEAD 2ff858b599c4b5f9b4b7b3a7a86513a8ab0619e2, worktree root; exit 0:
........................................ [100%]
40 passed in 2.38s
postgres_acceptance=passed: selected tests, zero skipped tests
Additional check in the same candidate tree:
python scripts/test_postgres.py tests/test_bridge_pickup.py tests/test_bridge_failure_background.py -p no:cacheprovider
at the worktree root; exit 0:
............................................. [100%]
45 passed in 15.63s
postgres_acceptance=passed: selected tests, zero skipped tests
Supplementary regressions cover stop signals at full capacity, other states without offers, unsafe/missing pickup reasons, and running work in another project bound to the same identity. All existing pickup/background tests pass.
K2 — fail (environment)¶
Method: python scripts/test_postgres.py -p no:cacheprovider.
Working directory: worktree root. Runtime and test files are exactly the
implementation tree committed as 2ff858b; only this evidence was added
while the run was in progress. Runner unchanged; exit 1.
55 failed, 1508 passed, 495 skipped, 5 errors in 590.62s (0:09:50)
The complete JUnit report confirms 55 failure elements, 5 error elements
and 495 skipped elements. Every skipped element carries the exact
tests/conftest.py reason:
listening sockets are not permitted here (agent sandbox); runs in CI
K2 is fail (environment), not an accepted listening-only exception.
Three backup assertions failed on PostgreSQL permission denials for
pg_stat_reset() / pg_stat_reset_shared(). Five backup fixture teardowns
failed with permission denied to terminate process (the server requires
the target role's privileges or pg_signal_backend). The remaining 52
failures are deployment-guard assertions in unchanged tests and scripts;
the report repeatedly shows the denied shell here-document prerequisite
at ops/deploy-heyaira.sh lines 774 and 856. Some downstream assertions
show only the missing expected action after that prerequisite failed;
the shared environmental cause for those is an inference. None of these
failures exercise the changed pickup probe.
Actual exception snippets:
asyncpg.exceptions.InsufficientPrivilegeError: permission denied for function pg_stat_reset
asyncpg.exceptions.InsufficientPrivilegeError: permission denied for function pg_stat_reset_shared
asyncpg.exceptions.InsufficientPrivilegeError: permission denied to terminate process
DETAIL: Only roles with privileges of the role whose process is being terminated or with privileges of the "pg_signal_backend" role may terminate this process.
ops/deploy-heyaira.sh: line 774: cannot create temp file for here document: Operation not permitted
ops/deploy-heyaira.sh: line 856: cannot create temp file for here document: Operation not permitted
Failure names (55):
tests/test_backup_state_marker.py::test_a_statistics_reset_never_repeats_an_earlier_marker
tests/test_backup_state_marker.py::test_a_discarded_statistics_epoch_moves_the_marker
tests/test_backup_state_marker.py::test_the_marker_does_not_depend_on_the_session_time_zone
tests/test_deployment_guard.py::test_failed_health_rolls_back_with_overlay_and_previous_revision
tests/test_deployment_guard.py::test_failed_release_rolls_back_to_the_previous_image_not_the_new_one
tests/test_deployment_guard.py::test_rollback_of_a_per_commit_release_restarts_its_own_image
tests/test_deployment_guard.py::test_new_service_without_previous_container_is_stopped_on_rollback
tests/test_deployment_guard.py::test_image_identity_is_verified_not_only_the_revision_variable
tests/test_deployment_guard.py::test_redeploy_of_an_earlier_release_restarts_its_exact_image
tests/test_deployment_guard.py::test_redeploy_rebuilds_a_removed_image_from_the_release
tests/test_deployment_guard.py::test_rollback_is_refused_below_the_applied_schema
tests/test_deployment_guard.py::test_refused_rollback_names_the_recovery_and_redeploy_recovers
tests/test_deployment_guard.py::test_schema_rule_ignores_unknown_older_and_empty_history
tests/test_deployment_guard.py::test_server_beat_only_verifies_revision_without_http_health
tests/test_deployment_guard.py::test_server_beat_wrong_revision_names_service_and_does_not_publish
tests/test_deployment_guard.py::test_mixed_deploy_verifies_both_services_and_checks_server_health
tests/test_deployment_guard.py::test_mixed_revision_failure_rolls_back_same_services
tests/test_deployment_guard.py::test_all_services_ignores_leftover_inactive_profile_worker
tests/test_deployment_guard.py::test_all_services_ignores_orphaned_service_container
tests/test_deployment_guard.py::test_all_services_still_fails_on_stopped_active_service
tests/test_deployment_guard.py::test_worker_waits_until_running_before_reading_revision
tests/test_deployment_guard.py::test_worker_running_timeout_rolls_back_and_names_service
tests/test_deployment_guard.py::test_revision_read_failure_rolls_back_and_names_service
tests/test_deployment_guard.py::test_beat_release_checks_overlay_label_and_waits_for_new_pulse
tests/test_deployment_guard.py::test_runner_created_without_overlay_rolls_back
tests/test_deployment_guard.py::test_missing_pulse_out_rolls_back_after_bounded_wait
tests/test_deployment_guard.py::test_release_copy_of_the_overlay_is_accepted
tests/test_deployment_guard.py::test_container_label_must_name_the_validated_overlay_path
tests/test_deployment_guard.py::test_start_failing_half_way_rolls_back_the_replaced_services
tests/test_deployment_guard.py::test_rollback_snapshot_does_not_claim_provenance
tests/test_deployment_guard.py::test_canonical_tag_is_created_only_from_a_matching_revision_label
tests/test_deployment_guard.py::test_redeploy_rebuilds_a_canonical_tag_without_matching_label
tests/test_deployment_guard.py::test_rollback_fails_when_a_new_service_cannot_be_stopped
tests/test_deployment_guard.py::test_pulse_from_another_runner_does_not_count
tests/test_deployment_guard.py::test_unreachable_watchdog_does_not_roll_back_a_working_beat_release
tests/test_deployment_guard.py::test_a_rejected_or_missing_pulse_out_still_rolls_back[0-0]
tests/test_deployment_guard.py::test_a_rejected_or_missing_pulse_out_still_rolls_back[2-1]
tests/test_deployment_guard.py::test_a_rejected_or_missing_pulse_out_still_rolls_back[0-3]
tests/test_deployment_guard.py::test_blocked_pulse_query_is_bounded_by_the_deadline
tests/test_deployment_guard.py::test_later_compose_file_overriding_the_activation_overlay_is_refused
tests/test_deployment_guard.py::test_effective_configuration_with_the_overlay_winning_passes
tests/test_deployment_guard.py::test_a_retention_key_created_after_the_deploy_is_used_once_retention_is_recreated
tests/test_deployment_guard.py::test_redeploy_links_host_env_files_into_an_older_release
tests/test_deployment_guard.py::test_release_applying_migrations_unknown_to_running_db_clients_is_refused
tests/test_deployment_guard.py::test_release_applying_migrations_passes_with_every_running_db_client
tests/test_deployment_guard.py::test_running_db_client_that_knows_the_new_migrations_may_stay
tests/test_deployment_guard.py::test_server_only_release_without_new_migrations_is_allowed
tests/test_deployment_guard.py::test_unreadable_running_db_client_counts_as_behind
tests/test_deployment_guard.py::test_redeploy_applying_migrations_unknown_to_running_db_clients_is_refused
tests/test_deployment_guard.py::test_stopped_db_client_that_can_come_back_is_checked_from_its_image[comes-back-and-is-behind]
tests/test_deployment_guard.py::test_stopped_db_client_that_can_come_back_is_checked_from_its_image[stays-stopped]
tests/test_deployment_guard.py::test_stopped_db_client_that_can_come_back_is_checked_from_its_image[comes-back-knowing-them]
tests/test_deployment_guard.py::test_every_replica_of_a_kept_db_client_is_checked
tests/test_deployment_guard.py::test_db_client_outside_the_release_config_is_checked_by_its_own_config
tests/test_deployment_guard.py::test_a_refused_release_can_be_retried_with_the_suggested_services
Teardown error names (5):
tests/test_backup_state_marker.py::test_a_discarded_statistics_epoch_moves_the_marker
tests/test_backup_state_marker.py::test_a_vanished_newest_copy_is_backed_up_again_while_the_data_is_unchanged[copy-gone-runtime-clock-ahead]
tests/test_backup_state_marker.py::test_r2_evidence_survives_a_database_clock_reset
tests/test_backup_state_marker.py::test_a_restored_older_dump_does_not_rank_new_backups_below_r2
tests/test_backup_state_marker.py::test_backup_fresh_allows_for_the_minimum_interval
Skipped test names (495; each has the identical listening-socket reason above):
tests/test_agent_catalog.py::test_agent_catalog_is_account_scoped_and_versioned
tests/test_authority_races_e2e.py::test_configure_holds_its_authority_while_waiting_for_the_task
tests/test_authority_races_e2e.py::test_workflow_control_holds_its_authority_while_waiting_for_the_task
tests/test_authority_races_e2e.py::test_project_update_holds_its_authority_while_waiting_for_the_project
tests/test_authority_races_e2e.py::test_dispatch_holds_its_authority_while_waiting_for_the_task
tests/test_authority_races_e2e.py::test_unbinding_holds_its_authority_while_waiting_for_the_binding
tests/test_authority_races_e2e.py::test_node_revoke_holds_its_authority_while_waiting_for_the_node
tests/test_authority_races_e2e.py::test_binding_holds_both_memberships_until_it_commits
tests/test_authority_races_e2e.py::test_an_offer_of_a_demoted_dispatcher_is_not_claimed
tests/test_authority_races_e2e.py::test_a_running_execution_of_a_removed_dispatcher_cannot_renew_report_or_offer
tests/test_authority_races_e2e.py::test_a_claim_holds_the_dispatchers_authority_while_waiting_for_the_task
tests/test_backup_state_marker_durable.py::test_creating_an_execution_moves_the_marker_and_is_backed_up
tests/test_backup_state_marker_durable.py::test_execution_state_changes_move_the_marker_and_lease_renewal_does_not
tests/test_backup_state_marker_durable.py::test_unclaimed_offer_bookkeeping_leaves_the_marker
tests/test_backup_state_marker_durable.py::test_cancelling_an_execution_moves_the_marker
tests/test_backup_state_marker_durable.py::test_interrupting_an_expired_execution_moves_the_marker
tests/test_backup_state_marker_durable.py::test_legacy_node_revocation_moves_the_marker_and_heartbeats_and_access_tokens_do_not
tests/test_backup_state_marker_durable.py::test_bridge_token_revocation_moves_the_marker
tests/test_backup_state_marker_durable.py::test_oauth_revocation_moves_the_marker_and_refresh_rotation_does_not
tests/test_backup_state_marker_durable.py::test_admin_revocations_move_the_marker
tests/test_bind1_mcp_e2e.py::test_two_instances_require_identity_binding_and_preserve_state
tests/test_bind1_mcp_e2e.py::test_instance_bound_static_token_is_rejected_by_same_project_other_instance
tests/test_bind_smoke_scripts.py::test_all_three_smoke_scripts_use_pinned_profile
tests/test_bridge_project_scope_e2e.py::test_bridge_node_project_catalog_and_feeds_are_isolated_by_binding
tests/test_bridge_project_scope_e2e.py::test_cross_subject_cosignature_binds_and_target_owner_unbinds[identity]
tests/test_bridge_project_scope_e2e.py::test_cross_subject_cosignature_binds_and_target_owner_unbinds[bridge_id]
tests/test_bridge_project_scope_e2e.py::test_cross_subject_cosignature_binds_and_target_owner_unbinds[uuid_bridge_id]
tests/test_bridge_project_scope_e2e.py::test_cosignature_refusals_do_not_create_or_restore_bindings[missing]
tests/test_bridge_project_scope_e2e.py::test_cosignature_refusals_do_not_create_or_restore_bindings[malformed]
tests/test_bridge_project_scope_e2e.py::test_cosignature_refusals_do_not_create_or_restore_bindings[other_identity]
tests/test_bridge_project_scope_e2e.py::test_cosignature_refusals_do_not_create_or_restore_bindings[revoked]
tests/test_bridge_project_scope_e2e.py::test_cosignature_refusals_do_not_create_or_restore_bindings[expired]
tests/test_bridge_project_scope_e2e.py::test_cosignature_refusals_do_not_create_or_restore_bindings[pending]
tests/test_bridge_project_scope_e2e.py::test_cosignature_refusals_do_not_create_or_restore_bindings[no_transport_scope]
tests/test_bridge_project_scope_e2e.py::test_cosignature_refusals_do_not_create_or_restore_bindings[other_account]
tests/test_bridge_project_scope_e2e.py::test_cosignature_refusals_do_not_create_or_restore_bindings[revoked_identity]
tests/test_bridge_project_scope_e2e.py::test_cosignature_refusals_do_not_create_or_restore_bindings[pending_identity]
tests/test_bridge_project_scope_e2e.py::test_cosignature_refusals_do_not_create_or_restore_bindings[no_actor_scope]
tests/test_bridge_project_scope_e2e.py::test_cosignature_refusals_do_not_create_or_restore_bindings[contributor]
tests/test_bridge_project_scope_e2e.py::test_binding_identity_uuid_wins_and_duplicate_bridge_id_is_hidden
tests/test_bridge_project_scope_e2e.py::test_cosignature_is_rechecked_after_waiting_for_identity_lock[revoke]
tests/test_bridge_project_scope_e2e.py::test_cosignature_is_rechecked_after_waiting_for_identity_lock[expire]
tests/test_bridge_transport_e2e.py::test_bridge_enrollment_transport_contract_on_isolated_postgres
tests/test_catalog_provisioning.py::test_catalog_provisioning_atomic_versions_permissions_and_replay
tests/test_catalog_workflow.py::test_catalog_dispatch_freezes_sources_and_preserves_acceptance[openai-execution_server0]
tests/test_catalog_workflow.py::test_catalog_dispatch_freezes_sources_and_preserves_acceptance[openrouter-execution_server0]
tests/test_ci_correction.py::test_a_failure_with_an_attempt_left_goes_back_to_the_worker_and_is_published_again[execution_server0]
tests/test_ci_correction.py::test_a_failure_with_no_attempt_left_ends_blocked_with_the_reason[execution_server0]
tests/test_ci_correction.py::test_a_failure_whose_dispatcher_lost_access_is_not_sent_back[execution_server0]
tests/test_ci_correction.py::test_a_redelivered_failure_reacts_once_and_later_runs_change_nothing[execution_server0]
tests/test_ci_correction.py::test_no_reaction_on_a_stale_candidate_or_a_merged_pull_request[execution_server0]
tests/test_ci_correction.py::test_an_unchecked_failure_can_be_sent_back_by_an_explicit_dispatch[execution_server0]
tests/test_ci_correction.py::test_an_older_failure_redelivered_after_a_successful_rerun_changes_nothing[execution_server0]
tests/test_ci_correction.py::test_a_rerun_that_fails_again_after_publication_is_acted_on[execution_server0]
tests/test_ci_correction.py::test_two_ci_workflows_with_the_same_name_are_ordered_apart[execution_server0]
tests/test_ci_correction.py::test_a_failure_reported_before_a_merged_publication_cannot_be_sent_back[execution_server0]
tests/test_ci_correction.py::test_a_failure_recorded_while_github_was_down_is_checked_again_before_a_manual_retry[execution_server0]
tests/test_ci_correction.py::test_a_merge_while_the_task_was_locked_is_seen_before_acting[execution_server0]
tests/test_ci_correction.py::test_a_task_handled_holds_no_lock_while_the_next_task_is_waited_for[execution_server0]
tests/test_ci_correction.py::test_the_corrected_acceptance_is_alerted_as_unpublished_on_its_own[execution_server0]
tests/test_ci_correction.py::test_a_legacy_entry_of_a_passing_rerun_still_hides_the_older_failure[execution_server0]
tests/test_ci_correction.py::test_a_delayed_older_failure_is_superseded_by_a_legacy_entry_of_a_newer_run[execution_server0]
tests/test_ci_correction.py::test_an_unresolvable_legacy_entry_never_acts_and_never_supersedes[execution_server0]
tests/test_ci_correction.py::test_a_legacy_entry_written_late_does_not_supersede_a_later_failure_of_its_run[execution_server0]
tests/test_ci_correction.py::test_an_authoritative_failure_is_never_taken_for_a_legacy_entry[execution_server0]
tests/test_ci_correction.py::test_a_redelivered_state_of_a_run_with_only_a_legacy_entry_corrects_once[execution_server0]
tests/test_ci_correction.py::test_a_ci_correction_says_the_candidate_is_published_and_must_not_be_rewritten[execution_server0]
tests/test_ci_correction.py::test_the_newest_publication_decides_and_an_older_confirmed_one_is_never_a_fallback[github_when_d_is_published0-None-execution_server0]
tests/test_ci_correction.py::test_the_newest_publication_decides_and_an_older_confirmed_one_is_never_a_fallback[github_when_d_is_published1-cccccccccccccccccccccccccccccccccccccccc-execution_server0]
tests/test_ci_correction.py::test_a_pull_request_whose_head_is_not_the_task_branch_is_never_advertised_as_published[execution_server0]
tests/test_ci_correction.py::test_ci_that_did_not_conclude_is_recorded_but_is_not_a_failure[execution_server0-cancelled]
tests/test_ci_correction.py::test_ci_that_did_not_conclude_is_recorded_but_is_not_a_failure[execution_server0-timed_out]
tests/test_ci_correction.py::test_a_newer_run_that_did_not_conclude_hides_an_older_failure_from_a_manual_retry[execution_server0]
tests/test_ci_correction.py::test_the_webhook_never_asks_github_and_leaves_the_failure_to_the_follow_up[execution_server0]
tests/test_ci_correction.py::test_a_run_from_a_fork_on_the_same_commit_is_never_recorded[execution_server0]
tests/test_ci_correction.py::test_one_correction_carries_every_failing_ci_workflow[execution_server0]
tests/test_ci_correction_capacity.py::test_a_correction_for_a_full_mac_waits_in_line_and_is_offered_when_a_slot_frees[execution_server0]
tests/test_ci_correction_capacity.py::test_a_waiting_correction_that_can_no_longer_be_sent_ends_blocked_with_the_reason[execution_server0]
tests/test_ci_correction_capacity.py::test_a_cancelled_waiting_correction_gives_its_place_back[execution_server0]
tests/test_ci_correction_capacity.py::test_corrections_stuck_on_full_macs_never_hide_a_later_one[execution_server0]
tests/test_ci_correction_capacity.py::test_runs_cut_short_by_the_supervisor_timeout_still_reach_later_corrections[execution_server0]
tests/test_ci_follow_up.py::test_a_failure_recorded_before_the_publication_is_acted_on_once_it_is_confirmed[execution_server0]
tests/test_ci_follow_up.py::test_a_failure_recorded_while_github_could_not_be_asked_is_acted_on_later[execution_server0]
tests/test_ci_follow_up.py::test_a_lost_webhook_is_made_up_for_by_asking_github[execution_server0]
tests/test_ci_follow_up.py::test_the_follow_up_ends_when_ci_concluded_and_is_bounded_otherwise[execution_server0]
tests/test_ci_follow_up.py::test_github_never_listing_a_run_stops_after_the_bound[execution_server0]
tests/test_ci_follow_up.py::test_a_failure_waiting_for_the_pull_request_lookup_keeps_the_follow_up_going[execution_server0]
tests/test_ci_follow_up.py::test_two_supervisors_run_one_follow_up_once[execution_server0]
tests/test_ci_follow_up.py::test_an_old_follow_up_never_ends_the_schedule_of_a_newer_publication[execution_server0]
tests/test_ci_follow_up.py::test_every_page_of_runs_is_read_before_ci_counts_as_settled[execution_server0]
tests/test_ci_follow_up.py::test_a_run_list_longer_than_the_page_bound_is_never_taken_as_complete[execution_server0]
tests/test_ci_follow_up.py::test_the_deploy_follows_up_recent_confirmed_publications_and_leaves_older_ones[execution_server0]
tests/test_ci_follow_up.py::test_a_held_task_lock_gives_the_claim_back_without_stalling_the_supervisor[execution_server0]
tests/test_ci_follow_up.py::test_a_follow_up_longer_than_its_claim_neither_overlaps_nor_loses_a_poll[execution_server0]
tests/test_ci_follow_up.py::test_a_newer_unfinished_run_holds_an_older_failure[execution_server0]
tests/test_ci_follow_up.py::test_ci_still_running_after_the_hour_ends_with_a_recorded_outcome_and_one_push[execution_server0]
tests/test_ci_follow_up.py::test_github_never_listing_a_run_ends_with_the_reason_and_the_push_is_not_repeated[-execution_server0]
tests/test_ci_follow_up.py::test_github_never_listing_a_run_ends_with_the_reason_and_the_push_is_not_repeated[1-execution_server0]
tests/test_ci_follow_up.py::test_two_concurrent_final_polls_push_the_phone_once[execution_server0]
tests/test_ci_follow_up.py::test_settled_ci_records_no_unfinished_outcome[execution_server0]
tests/test_ci_follow_up.py::test_the_first_poll_holds_a_failure_while_a_newer_run_of_its_workflow_is_running[execution_server0]
tests/test_ci_follow_up.py::test_a_poll_sends_every_failing_ci_workflow_back_in_one_correction[execution_server0]
tests/test_ci_follow_up.py::test_polled_runs_built_from_a_fork_are_ignored[execution_server0]
tests/test_ci_follow_up.py::test_a_follow_up_that_keeps_failing_ends_with_its_schedule[execution_server0]
tests/test_ci_follow_up.py::test_a_recorded_failure_waits_while_github_cannot_list_the_runs[execution_server0]
tests/test_ci_follow_up.py::test_a_partly_read_run_list_never_sends_back_a_correction_missing_a_failure[execution_server0]
tests/test_ci_follow_up.py::test_a_follow_up_that_always_runs_out_of_time_ends_with_its_schedule[execution_server0]
tests/test_ci_follow_up.py::test_a_follow_up_cut_short_by_the_run_budget_spends_no_poll[execution_server0]
tests/test_cold_handoff_e2e.py::test_disconnected_mcp_clients_verify_git_before_completion[False]
tests/test_cold_handoff_e2e.py::test_disconnected_mcp_clients_verify_git_before_completion[True]
tests/test_execution_e2e.py::test_standalone_creation_keeps_a_stable_410_and_writes_nothing
tests/test_execution_e2e.py::test_node_capacity_limits_concurrent_executions
tests/test_execution_e2e.py::test_capacity_migrations_remove_the_legacy_guard
tests/test_execution_e2e.py::test_the_slot_marker_is_dropped_and_offers_still_work
tests/test_f1_mcp_e2e.py::test_full_mcp_bootstrap_to_git_document_read_on_isolated_postgres
tests/test_lease_grace.py::test_the_same_lease_holder_reattaches_after_a_three_minute_drop
tests/test_lease_grace.py::test_the_stored_lease_never_passes_the_task_time_limit
tests/test_lease_grace.py::test_the_expiry_job_waits_out_the_tolerance_and_then_blocks
tests/test_lease_grace.py::test_a_credential_issued_after_a_drop_is_not_already_expired
tests/test_lease_grace.py::test_a_run_on_a_mac_asleep_between_scheduled_wakes_keeps_its_lease
tests/test_lease_grace.py::test_a_mac_back_from_sleep_before_the_reaper_ran_keeps_its_run
tests/test_lease_grace.py::test_an_awake_mac_whose_run_stopped_renewing_keeps_the_short_lease
tests/test_lease_grace.py::test_a_sleeping_mac_never_keeps_its_run_past_the_task_deadline
tests/test_memory_search_e2e.py::test_memory_search_summary_and_legacy_results_over_mcp_and_bridge
tests/test_mobile_authority_e2e.py::test_the_phone_flow_works_with_the_scope_the_app_requests
tests/test_mobile_authority_e2e.py::test_a_read_only_grant_cannot_write_phone_state
tests/test_mobile_authority_e2e.py::test_a_viewer_cannot_write_phone_state
tests/test_mobile_authority_e2e.py::test_phone_writes_hold_the_authority_against_a_concurrent_revocation
tests/test_mobile_authority_e2e.py::test_an_app_sign_in_without_the_scope_keeps_phone_writes
tests/test_mobile_authority_e2e.py::test_the_same_app_grant_after_demotion_to_viewer_cannot_write
tests/test_mobile_authority_e2e.py::test_an_unverified_read_only_grant_cannot_write_even_if_named_like_the_app
tests/test_mobile_delivery_offloop.py::test_device_registration_and_revoke_keep_the_vault_off_the_loop
tests/test_mobile_delivery_offloop.py::test_a_push_dispatched_while_the_token_is_being_installed_is_retried
tests/test_mobile_delivery_offloop.py::test_a_rotated_token_is_never_sent_old_and_is_delivered_once_installed
tests/test_mobile_delivery_offloop.py::test_a_token_never_installed_fails_after_the_deferral_window
tests/test_mobile_delivery_offloop.py::test_a_cancelled_revoke_keeps_its_lock_until_the_delete_really_ends
tests/test_mobile_delivery_offloop.py::test_a_slow_revoke_never_deletes_the_token_of_a_later_registration
tests/test_mobile_inbox.py::test_inbox_api_on_isolated_postgres
tests/test_oauth_client_secrets_e2e.py::test_registered_confidential_client_works_after_two_seconds_without_stored_plaintext
tests/test_oauth_client_secrets_e2e.py::test_migration_scrubs_dormant_legacy_rows
tests/test_oauth_client_secrets_e2e.py::test_legacy_plaintext_row_is_scrubbed_and_still_authenticates[True]
tests/test_oauth_client_secrets_e2e.py::test_legacy_plaintext_row_is_scrubbed_and_still_authenticates[False]
tests/test_oauth_consent_trust_e2e.py::test_a_mixed_registration_is_flagged_and_keeps_secret_authentication
tests/test_oauth_consent_trust_e2e.py::test_a_loopback_or_app_callback_next_to_an_attacker_is_not_local
tests/test_oauth_consent_trust_e2e.py::test_an_impostor_named_claude_is_flagged_and_gets_read_access_only
tests/test_oauth_consent_trust_e2e.py::test_the_owner_can_tick_write_access_for_an_unverified_client
tests/test_oauth_consent_trust_e2e.py::test_hosted_connectors_and_local_clients_keep_their_full_flow
tests/test_oauth_storage_bounds_e2e.py::test_registration_size_and_fields_are_bounded
tests/test_oauth_storage_bounds_e2e.py::test_never_used_registrations_and_expired_links_are_purged
tests/test_oauth_storage_bounds_e2e.py::test_unused_registrations_are_capped
tests/test_oauth_storage_bounds_e2e.py::test_pending_consent_links_are_capped_and_state_is_bounded
tests/test_oauth_storage_bounds_e2e.py::test_denying_does_not_free_the_cap
tests/test_oauth_storage_bounds_e2e.py::test_one_source_cannot_take_more_than_its_share_of_registrations
tests/test_oauth_storage_bounds_e2e.py::test_one_source_cannot_take_more_than_its_share_of_consent_links
tests/test_org_v1_b1.py::test_tree_add_move_cycle_foreign_parent_duplicate_and_archive
tests/test_org_v1_b1.py::test_assignments_multiple_duplicate_mismatch_supersede_unassign_history
tests/test_org_v1_b1.py::test_subject_person_session_label_uniqueness_and_account_owner
tests/test_org_v1_b1.py::test_project_isolation_with_shared_account_identity
tests/test_org_v1_b1.py::test_scopes_owner_opt_in_static_and_execution_restrictions
tests/test_org_v1_b1.py::test_continuity_org_active_nodes_and_four_kib_bound
tests/test_org_v1_b2.py::test_migration_backfill_and_immutable_history
tests/test_org_v1_b2.py::test_forward_path_all_flags_completion_and_version
tests/test_org_v1_b2.py::test_skip_disabled_stages_and_all_backwards
tests/test_org_v1_b2.py::test_dropped_requires_and_preserves_reason_without_receipt[idea]
tests/test_org_v1_b2.py::test_dropped_requires_and_preserves_reason_without_receipt[refining]
tests/test_org_v1_b2.py::test_dropped_requires_and_preserves_reason_without_receipt[ready]
tests/test_org_v1_b2.py::test_dropped_forbidden_after_ready[executing]
tests/test_org_v1_b2.py::test_dropped_forbidden_after_ready[verifying]
tests/test_org_v1_b2.py::test_dropped_forbidden_after_ready[ci]
tests/test_org_v1_b2.py::test_dropped_forbidden_after_ready[awaiting_decision]
tests/test_org_v1_b2.py::test_dropped_forbidden_after_ready[deploying]
tests/test_org_v1_b2.py::test_dropped_forbidden_after_ready[accepting]
tests/test_org_v1_b2.py::test_dropped_forbidden_after_ready[done]
tests/test_org_v1_b2.py::test_waiting_metadata_omitted_null_changed_and_blocked_status
tests/test_org_v1_b2.py::test_route_projection_approvals_and_wrong_project_assignments
tests/test_org_v1_b2.py::test_next_actor_terminal_override_active_and_missing
tests/test_org_v1_b2.py::test_next_actor_owner_and_devops_cardinality
tests/test_org_v1_b2.py::test_every_workflow_projection_row[ready-None-0-False-False-ready]
tests/test_org_v1_b2.py::test_every_workflow_projection_row[queued-None-0-False-False-executing]
tests/test_org_v1_b2.py::test_every_workflow_projection_row[claimed-None-0-False-False-executing]
tests/test_org_v1_b2.py::test_every_workflow_projection_row[preparing-None-0-False-False-executing]
tests/test_org_v1_b2.py::test_every_workflow_projection_row[running-None-0-False-False-executing]
tests/test_org_v1_b2.py::test_every_workflow_projection_row[changes_requested-None-0-False-False-executing]
tests/test_org_v1_b2.py::test_every_workflow_projection_row[changes_requested-None-0-False-True-executing]
tests/test_org_v1_b2.py::test_every_workflow_projection_row[awaiting_verification-None-0-False-False-verifying]
tests/test_org_v1_b2.py::test_every_workflow_projection_row[verifying-None-0-False-False-verifying]
tests/test_org_v1_b2.py::test_every_workflow_projection_row[done-confirmed-0-True-False-ci]
tests/test_org_v1_b2.py::test_every_workflow_projection_row[done-confirmed-0-False-False-done]
tests/test_org_v1_b2.py::test_every_workflow_projection_row[done-confirmed-12-True-False-done]
tests/test_org_v1_b2.py::test_every_workflow_projection_row[done-awaiting-0-False-False-accepting]
tests/test_org_v1_b2.py::test_every_workflow_projection_row[done-unchecked-0-False-False-accepting]
tests/test_org_v1_b2.py::test_every_workflow_projection_row[done-blocked-0-False-False-accepting]
tests/test_org_v1_b2.py::test_every_workflow_projection_row[done-None-0-False-False-done]
tests/test_org_v1_b2.py::test_blocked_cancelled_previous_phase[done-ci-blocked]
tests/test_org_v1_b2.py::test_blocked_cancelled_previous_phase[done-ci-cancelled]
tests/test_org_v1_b2.py::test_blocked_cancelled_previous_phase[verifying-verifying-blocked]
tests/test_org_v1_b2.py::test_blocked_cancelled_previous_phase[verifying-verifying-cancelled]
tests/test_org_v1_b2.py::test_blocked_cancelled_previous_phase[running-executing-blocked]
tests/test_org_v1_b2.py::test_blocked_cancelled_previous_phase[running-executing-cancelled]
tests/test_org_v1_b2.py::test_blocked_cancelled_previous_phase[None-ready-blocked]
tests/test_org_v1_b2.py::test_blocked_cancelled_previous_phase[None-ready-cancelled]
tests/test_org_v1_b2.py::test_blocked_responsible_rule_and_override_precedence[False]
tests/test_org_v1_b2.py::test_blocked_responsible_rule_and_override_precedence[True]
tests/test_org_v1_b2.py::test_legacy_task_update_stage_compatibility
tests/test_org_v1_b3a.py::test_cycle_reports_release_and_public_secret_boundary
tests/test_org_v1_b3a.py::test_refusals_takeover_and_expiry_freshness
tests/test_org_v1_b3a.py::test_claim_race_and_workflow_exclusion_in_both_directions
tests/test_org_v1_b3a.py::test_identity_binding_isolation_and_subject_validation
tests/test_org_v1_b3a.py::test_repository_resolution
tests/test_org_v1_b3a.py::test_bridge_projection_and_idempotent_materialization
tests/test_org_v1_b4.py::test_each_counter_equals_distinct_paginated_lists_per_project_and_total
tests/test_org_v1_b4.py::test_stuck_unions_each_condition_and_deduplicates
tests/test_org_v1_b4.py::test_waiting_for_me_uses_next_actor_owner_identity_and_null_means_zero
tests/test_org_v1_b4.py::test_workload_uses_claim_subject_including_bridge_and_sums_projects
tests/test_org_v1_b4.py::test_assignment_matches_all_four_fields_and_filters_are_anded
tests/test_org_v1_b4.py::test_node_binding_and_project_token_isolation_including_filters
tests/test_org_v1_b4.py::test_presence_current_recent_released_and_bridge_projections
tests/test_org_v1_b4.py::test_org_matches_mcp_and_resolves_unassigned_account_owner
tests/test_org_v1_b4.py::test_all_response_shapes_match_recursive_example_keys
tests/test_org_v1_b4.py::test_portfolio_and_task_pages_use_constant_sql_statements
tests/test_production_catalog_background_canary.py::test_canary_reads_real_session_rows_of_a_correction_loop[True]
tests/test_production_catalog_background_canary.py::test_canary_reads_real_session_rows_of_a_correction_loop[False]
tests/test_project_resource_e2e.py::test_per_project_metadata_and_unknown_address
tests/test_project_resource_e2e.py::test_grant_is_bound_to_its_own_address
tests/test_project_resource_e2e.py::test_static_token_works_on_legacy_and_own_address_only
tests/test_project_resource_e2e.py::test_write_context_must_name_the_address_in_use
tests/test_project_resource_e2e.py::test_oauth_flow_binds_grant_to_the_project_address
tests/test_project_resource_e2e.py::test_bridge_authentication_accepts_the_projects_own_address
tests/test_project_resource_e2e.py::test_project_update_sets_description_for_owner_only
tests/test_project_resource_e2e.py::test_node_revoke_and_notification_need_a_project_admin
tests/test_project_resource_e2e.py::test_consent_needs_an_active_membership
tests/test_publication_end_state.py::test_accepted_work_is_done_only_once_github_confirms_its_pull_request[execution_server0]
tests/test_publication_end_state.py::test_a_failure_the_mac_reports_blocks_at_once_with_its_reason[execution_server0]
tests/test_publication_end_state.py::test_work_blocked_for_its_publication_can_be_sent_again[execution_server0]
tests/test_publication_end_state.py::test_an_unchecked_publication_is_checked_again_until_github_confirms_it[execution_server0]
tests/test_publication_end_state.py::test_an_identical_replay_confirms_an_unchecked_publication[execution_server0]
tests/test_publication_end_state.py::test_a_publication_github_never_confirms_ends_blocked_with_the_reason[execution_server0]
tests/test_publication_end_state.py::test_a_publication_blocked_after_its_rechecks_completes_when_github_comes_back[execution_server0]
tests/test_publication_end_state.py::test_a_publication_github_never_confirms_in_24_hours_ends_blocked_with_a_final_reason[execution_server0]
tests/test_publication_end_state.py::test_a_slow_recheck_that_finds_another_head_withdraws_it_and_says_so[execution_server0]
tests/test_publication_end_state.py::test_the_deploy_reschedules_recent_publications_blocked_after_their_rechecks[execution_server0]
tests/test_publication_end_state.py::test_a_publication_github_refuses_later_is_withdrawn_and_blocked[execution_server0]
tests/test_publication_end_state.py::test_the_deploy_watches_recent_unreported_acceptances_and_leaves_older_ones_as_they_were[execution_server0]
tests/test_publication_end_state.py::test_a_refused_report_blocks_at_once_and_says_why[execution_server0]
tests/test_publication_end_state.py::test_two_supervisors_count_one_recheck_once[execution_server0]
tests/test_publication_end_state.py::test_a_hanging_github_request_counts_as_one_try_and_the_others_go_on[execution_server0]
tests/test_publication_end_state.py::test_one_recheck_run_keeps_to_its_time_budget[execution_server0]
tests/test_publication_end_state.py::test_a_recheck_that_fails_with_its_own_error_counts_as_a_try[execution_server0]
tests/test_publication_missing.py::test_accepted_work_without_a_pull_request_is_reported_once_and_reaches_the_phones
tests/test_publication_missing.py::test_no_alert_inside_the_window_or_once_the_pull_request_is_reported
tests/test_publication_missing.py::test_a_workflow_that_is_not_current_or_not_done_is_not_reported
tests/test_publication_missing.py::test_concurrent_runs_alert_once_and_a_locked_task_is_left_for_the_next_run
tests/test_publication_missing.py::test_work_accepted_before_the_migration_is_never_reported_and_later_work_is
tests/test_publication_missing.py::test_with_project_copies_the_push_reaches_the_phones_without_a_mac
tests/test_publication_missing.py::test_unpublished_work_the_mac_can_no_longer_publish_says_so[unbind-the Mac is no longer bound to the project]
tests/test_publication_missing.py::test_unpublished_work_the_mac_can_no_longer_publish_says_so[demotion-the dispatcher no longer administers the project]
tests/test_require_listening.py::test_a_restrictive_umask_does_not_read_as_a_sandbox
tests/test_require_listening.py::test_an_allowed_listener_runs_the_test[tcp]
tests/test_require_listening.py::test_an_allowed_listener_runs_the_test[unix]
tests/test_resend_other_mac.py::test_an_unpublished_candidate_is_not_carried_to_another_mac
tests/test_resend_other_mac.py::test_the_mac_that_made_the_candidate_still_gets_it
tests/test_resend_other_mac.py::test_a_candidate_confirmed_on_github_is_carried_to_another_mac[execution_server0]
tests/test_revoke_commands.py::test_revoking_a_project_token_ends_everything_granted_through_it
tests/test_revoke_commands.py::test_revoking_a_bridge_identity_stops_its_work_and_credentials
tests/test_revoke_races.py::test_token_revocation_closes_what_it_delegated
tests/test_revoke_races.py::test_token_revocation_reaches_its_grants_in_other_projects
tests/test_revoke_races.py::test_last_admin_guard_covers_other_projects_the_token_administers
tests/test_revoke_races.py::test_a_contributor_token_is_revoked_without_allow_last
tests/test_revoke_races.py::test_two_revocations_cannot_remove_both_last_admins
tests/test_revoke_races.py::test_guard_counts_only_active_admin_tokens
tests/test_revoke_races.py::test_code_exchange_in_flight_is_revoked_with_the_token
tests/test_revoke_races.py::test_a_code_or_refresh_token_of_a_revoked_token_issues_nothing
tests/test_revoke_races.py::test_mac_revocation_stops_the_verifier_of_a_worker_that_just_finished
tests/test_revoke_races.py::test_mac_revocation_stops_a_dispatch_that_committed_during_it
tests/test_revoke_races.py::test_a_dispatch_behind_the_revocation_finds_the_mac_revoked
tests/test_revoke_races.py::test_nothing_the_mac_held_works_after_revocation[active]
tests/test_revoke_races.py::test_nothing_the_mac_held_works_after_revocation[pending]
tests/test_revoke_races.py::test_nothing_the_mac_held_works_after_revocation[expired]
tests/test_revoke_races.py::test_nothing_the_mac_held_works_after_revocation[already_revoked]
tests/test_revoke_races.py::test_nothing_the_mac_held_works_after_revocation[multiple_active]
tests/test_revoke_races.py::test_a_failed_mac_revocation_changes_nothing
tests/test_revoke_races.py::test_a_completion_and_a_revocation_do_not_deadlock
tests/test_revoke_races.py::test_revoking_a_mac_shared_by_two_projects_stops_both
tests/test_revoke_races.py::test_a_binding_written_during_token_revocation_is_revoked_with_it
tests/test_revoke_races.py::test_a_phone_registered_during_token_revocation_is_revoked_with_it
tests/test_revoke_races.py::test_a_binding_after_token_revocation_is_refused
tests/test_revoke_races.py::test_re_pairing_and_mac_revocation_do_not_deadlock
tests/test_revoke_races.py::test_a_refresh_in_flight_is_revoked_with_the_token
tests/test_role_enforcement_e2e.py::test_a_viewer_project_token_cannot_write_memories_or_tasks
tests/test_role_enforcement_e2e.py::test_a_project_token_without_an_active_membership_is_not_accepted
tests/test_role_enforcement_e2e.py::test_the_write_itself_rechecks_the_current_role
tests/test_role_enforcement_e2e.py::test_oauth_grant_and_refresh_follow_a_demotion
tests/test_role_enforcement_e2e.py::test_code_exchange_issues_only_what_the_current_role_allows
tests/test_runtime_f1_e2e.py::test_runtime_bootstrap_document_and_continuity_recovery_on_isolated_postgres
tests/test_security_p3_e2e.py::test_node_device_and_notification_reads_need_tasks_read
tests/test_security_p3_e2e.py::test_a_rotated_refresh_token_presented_again_revokes_its_grant
tests/test_security_p3_e2e.py::test_a_double_allow_mints_one_code
tests/test_security_p3_e2e.py::test_the_shared_claude_callback_alone_is_not_verified
tests/test_security_p3_e2e.py::test_an_attacker_registering_claude_with_the_real_callback_gets_destination_wording
tests/test_server_beat_audit.py::test_F3_smtp_tarpit_is_cut_at_the_deadline
tests/test_server_beat_audit.py::test_F3_a_deadline_during_the_tcp_connect_still_cuts_the_greeting
tests/test_server_beat_audit.py::test_F3_a_dripping_quit_reply_cannot_hold_the_session
tests/test_server_beat_audit.py::test_F3_the_tls_handshake_is_under_the_deadline
tests/test_server_beat_audit.py::test_F8_hanging_tls_probe_is_recorded_as_fail
tests/test_server_beat_audit.py::test_R5_03_broker_never_starts_a_restart_after_the_callers_deadline
tests/test_server_beat_corrections.py::test_B3_periodic_authenticated_pulse_and_stale_replay
tests/test_server_beat_corrections.py::test_B5_on_host_actual_target_stop_persists_and_notifies
tests/test_server_beat_corrections.py::test_B6_actual_broker_restores_and_verifies_watchdog
tests/test_server_beat_corrections.py::test_B7_restart_success_but_unhealthy_escalates_after_three_repairs
tests/test_server_beat_corrections.py::test_B8_openbao_http_result_persisted[500-payload0]
tests/test_server_beat_corrections.py::test_B8_openbao_http_result_persisted[403-payload1]
tests/test_server_beat_corrections.py::test_B8_openbao_http_result_persisted[200-payload2]
tests/test_server_beat_corrections.py::test_B8_openbao_http_result_persisted[200-payload3]
tests/test_server_beat_corrections.py::test_B8_openbao_http_result_persisted[200-payload4]
tests/test_server_checks.py::test_a_pull_request_with_the_accepted_commit_is_confirmed[execution_server0]
tests/test_server_checks.py::test_a_pull_request_that_differs_or_does_not_exist_is_refused[execution_server0]
tests/test_server_checks.py::test_a_pull_request_from_a_fork_or_another_branch_is_refused[execution_server0]
tests/test_server_checks.py::test_github_out_of_reach_records_the_publication_as_unchecked[execution_server0]
tests/test_server_checks.py::test_ci_on_the_accepted_commit_lands_in_the_task_history[execution_server0]
tests/test_server_checks.py::test_a_closed_unmerged_pull_request_is_refused[execution_server0]
tests/test_server_checks.py::test_repository_addresses_are_compared_without_case_slash_or_dot_git[execution_server0]
tests/test_server_checks.py::test_the_webhook_records_ci_for_every_bound_project_and_survives_a_failed_first_delivery[execution_server0]
tests/test_session_resume.py::test_a_correction_resumes_the_worker_and_the_verifier_resumes_itself
tests/test_session_resume.py::test_a_running_report_may_say_it_resumed
tests/test_session_resume.py::test_a_different_account_or_repository_gets_no_resume
tests/test_session_resume.py::test_a_redispatch_continues_from_the_last_candidate_with_the_last_session
tests/test_session_resume.py::test_a_redispatch_on_the_same_base_carries_the_candidate_and_says_so
tests/test_session_resume.py::test_a_redispatch_on_a_new_base_starts_fresh_and_records_why
tests/test_session_resume.py::test_going_back_to_an_earlier_base_is_still_a_fresh_start
tests/test_session_resume.py::test_a_redispatch_note_carries_findings_but_never_the_macs_own_text
tests/test_session_resume.py::test_newer_sessions_under_another_account_do_not_hide_the_matching_one
tests/test_session_resume.py::test_a_session_id_sent_before_work_started_is_never_offered_for_resume
tests/test_session_resume.py::test_a_carried_unpublished_candidate_is_built_on_not_rewritten
tests/test_session_resume.py::test_a_correction_builds_on_its_candidate_and_the_verifier_is_not_told_to
tests/test_session_resume.py::test_published_commit_follows_the_line_of_work_and_not_a_fresh_start
tests/test_session_resume.py::test_only_a_confirmed_publication_from_the_task_branch_counts[server_check0]
tests/test_session_resume.py::test_only_a_confirmed_publication_from_the_task_branch_counts[server_check1]
tests/test_session_resume.py::test_only_a_confirmed_publication_from_the_task_branch_counts[server_check2]
tests/test_session_resume.py::test_only_a_confirmed_publication_from_the_task_branch_counts[server_check3]
tests/test_session_resume.py::test_a_publication_on_another_branch_is_not_this_branchs
tests/test_session_resume.py::test_a_bridge_without_the_capability_never_gets_the_key_but_still_the_sentence[capabilities0]
tests/test_session_resume.py::test_a_bridge_without_the_capability_never_gets_the_key_but_still_the_sentence[capabilities1]
tests/test_session_resume.py::test_a_bridge_downgraded_after_the_offer_cannot_claim_a_plan_it_cannot_read
tests/test_session_resume.py::test_a_downgrade_after_the_waiting_report_still_tells_the_owner_why
tests/test_session_resume.py::test_a_mac_downgraded_before_the_waiting_report_is_told_once
tests/test_summary_tags.py::test_continuity_context_stays_bounded_with_oversized_entries
tests/test_task_ci.py::test_attach_success_version_notification_and_no_logs[execution_server0-case0]
tests/test_task_ci.py::test_failure_waits_for_every_run_and_returns_executor[failure-execution_server0-case0]
tests/test_task_ci.py::test_failure_waits_for_every_run_and_returns_executor[cancelled-execution_server0-case0]
tests/test_task_ci.py::test_failure_waits_for_every_run_and_returns_executor[timed_out-execution_server0-case0]
tests/test_task_ci.py::test_new_sha_cancels_old_and_inflight_poll_cannot_settle_it[execution_server0-case0]
tests/test_task_ci.py::test_webhook_fences_older_poll_snapshot[execution_server0-case0]
tests/test_task_ci.py::test_polling_without_webhook_timeout_and_no_automatic_done[execution_server0-case0]
tests/test_task_ci.py::test_repository_scope_context_and_workflow_refusals[execution_server0-case0]
tests/test_task_ci.py::test_bridge_authorization_and_contract[execution_server0-case0]
tests/test_task_ci.py::test_signed_webhook_wakes_watch_and_duplicates_do_not_resettle[execution_server0-case0]
tests/test_task_ci.py::test_success_follows_enabled_route[route0-awaiting_decision-execution_server0-case0]
tests/test_task_ci.py::test_success_follows_enabled_route[route1-deploying-execution_server0-case0]
tests/test_task_ci.py::test_success_follows_enabled_route[route2-accepting-execution_server0-case0]
tests/test_task_ci.py::test_empty_partial_and_fork_runs_never_pass[execution_server0-case0]
tests/test_task_ci.py::test_removed_repository_and_manual_stage_cancel_watch[execution_server0-case0]
tests/test_task_ci.py::test_mcp_scope_membership_and_foreign_repository[execution_server0-case0]
tests/test_task_ci.py::test_concurrent_polls_settle_once[execution_server0-case0]
tests/test_task_ci.py::test_responsible_has_move_after_terminal_ci_without_next_stage[success-execution_server0-case0]
tests/test_task_ci.py::test_responsible_has_move_after_terminal_ci_without_next_stage[None-execution_server0-case0]
tests/test_task_ci.py::test_authority_rechecked_after_github_io[execution_server0-case0]
tests/test_task_ci.py::test_old_interactive_watch_does_not_change_workflow_next_actor[execution_server0-case0]
tests/test_task_ci.py::test_unknown_conclusion_and_github_errors_end_unfinished[execution_server0-case0]
tests/test_task_ci.py::test_repository_create_and_all_read_surfaces[execution_server0-case0]
tests/test_task_ci.py::test_create_unknown_repository_is_atomic[example/missing-execution_server0-case0]
tests/test_task_ci.py::test_create_unknown_repository_is_atomic[other/private-execution_server0-case0]
tests/test_task_ci.py::test_create_unknown_repository_is_atomic[-execution_server0-case0]
tests/test_task_ci.py::test_create_unknown_repository_is_atomic[https://github.com/example/extension-execution_server0-case0]
tests/test_task_ci.py::test_repository_update_and_idempotency[execution_server0-case0]
tests/test_task_ci.py::test_repository_change_locked_by_watching_follow_up[execution_server0-case0]
tests/test_task_ci.py::test_repository_change_locked_by_current_workflow[execution_server0-case0]
tests/test_task_ci.py::test_follow_requires_sha_in_mcp_and_rest[execution_server0-case0]
tests/test_task_ci.py::test_multi_repository_unbound_task_requires_selection[execution_server0-case0]
tests/test_task_ci.py::test_wrong_repository_and_wrong_sha_refused_before_watch[execution_server0-case0]
tests/test_task_ci.py::test_pr_number_in_other_project_repository_never_watched[execution_server0-case0]
tests/test_task_ci.py::test_single_repository_default_and_legacy_unbound_task[execution_server0-case0]
tests/test_task_ci.py::test_repository_change_locked_by_unreleased_claim[False-execution_server0-case0]
tests/test_task_ci.py::test_repository_change_locked_by_unreleased_claim[True-execution_server0-case0]
tests/test_task_ci.py::test_repository_mutation_during_github_lookup_cannot_attach_stale_watch[execution_server0-case0]
tests/test_task_ci.py::test_execution_configuration_shares_repository_lock[execution_server0-case0]
tests/test_task_ci.py::test_bridge_repository_mismatch_never_creates_watch[execution_server0-case0]
tests/test_task_ci.py::test_legacy_claim_can_pin_its_repository_but_cannot_change_it[False-active-execution_server0-case0]
tests/test_task_ci.py::test_legacy_claim_can_pin_its_repository_but_cannot_change_it[False-lost_contact-execution_server0-case0]
tests/test_task_ci.py::test_legacy_claim_can_pin_its_repository_but_cannot_change_it[True-active-execution_server0-case0]
tests/test_task_ci.py::test_legacy_claim_can_pin_its_repository_but_cannot_change_it[True-lost_contact-execution_server0-case0]
tests/test_task_ci.py::test_legacy_watch_can_pin_only_its_recorded_repository[execution_server0-case0]
tests/test_task_execution.py::test_task_versions_and_lease_scoped_mcp
tests/test_task_execution.py::test_verification_timeline_evidence
tests/test_task_execution.py::test_send_version_timeline_and_publication[execution_server0-openai-none]
tests/test_task_execution.py::test_send_version_timeline_and_publication[execution_server0-openai-independent]
tests/test_task_execution.py::test_send_version_timeline_and_publication[execution_server0-openrouter-none]
tests/test_task_execution.py::test_send_version_timeline_and_publication[execution_server0-openrouter-independent]
tests/test_task_execution_review.py::test_missing_instance_refused_before_sql_and_result_survives_execution_delete
tests/test_task_execution_review.py::test_expired_claim_is_terminal_and_renew_is_clipped
tests/test_task_execution_review.py::test_execution_scoped_idempotency_and_verifier_read_only
tests/test_task_execution_review.py::test_029_legacy_backfill_old_insert_and_immutable_versions
tests/test_task_execution_review.py::test_expired_offer_reaped_without_claim
tests/test_task_execution_review.py::test_initial_expired_offer_cannot_race_reaper
tests/test_task_execution_review.py::test_pairing_cannot_impersonate_an_enrolled_device
tests/test_task_execution_review.py::test_enrolled_device_pairs_and_repairs_with_matching_key[pending-]
tests/test_task_execution_review.py::test_enrolled_device_pairs_and_repairs_with_matching_key[pending-sha256:]
tests/test_task_execution_review.py::test_enrolled_device_pairs_and_repairs_with_matching_key[active-]
tests/test_task_execution_review.py::test_enrolled_device_pairs_and_repairs_with_matching_key[active-sha256:]
tests/test_unbind_stops_work.py::test_an_offer_of_the_unbound_project_is_cancelled_and_the_task_says_why
tests/test_unbind_stops_work.py::test_an_offer_committed_during_the_unbind_with_its_task_held_by_a_claim_never_deadlocks
tests/test_unbind_stops_work.py::test_a_running_execution_of_the_unbound_project_is_stopped
tests/test_unclaimed_offers.py::test_an_online_mac_that_does_not_claim_is_reported_once_with_its_reason
tests/test_unclaimed_offers.py::test_an_asleep_mac_is_given_until_it_misses_its_wake
tests/test_unclaimed_offers.py::test_offers_without_a_mac_are_still_reported_and_wait_out_the_time_limit
tests/test_unclaimed_offers.py::test_a_sleeping_mac_full_of_offers_does_not_starve_the_alert
tests/test_unclaimed_offers.py::test_more_sleeping_offers_than_one_run_scans_still_let_others_through
tests/test_workcenter_app_access.py::test_app_token_reads_its_own_project_work_center
tests/test_workflow_cancel_bridge.py::test_cancel_reaches_the_bridge_and_refuses_the_cancelled_run[offered]
tests/test_workflow_cancel_bridge.py::test_cancel_reaches_the_bridge_and_refuses_the_cancelled_run[claimed]
tests/test_workflow_cancel_bridge.py::test_cancel_reaches_the_bridge_and_refuses_the_cancelled_run[running]
tests/test_workflow_cancel_bridge.py::test_cancel_reaches_the_bridge_and_refuses_the_cancelled_run[verifying]
tests/test_workflow_e2e.py::test_workflow_dispatch_catalog_refuses_a_workflow_without_a_task_reference
tests/test_workflow_e2e.py::test_historical_legacy_and_standalone_rows_are_still_read
tests/test_workflow_e2e.py::test_workflow_get_compact_full_and_bridge_internal_contracts[queued]
tests/test_workflow_e2e.py::test_workflow_get_compact_full_and_bridge_internal_contracts[done]
tests/test_workflow_e2e.py::test_frozen_instructions_need_the_reads_behind_them
tests/test_workflow_e2e.py::test_workflow_mcp_dispatch_http_verification_atomic_acceptance
tests/test_workflow_e2e.py::test_workflow_rejects_unbound_or_incomplete_verdict[digest]
tests/test_workflow_e2e.py::test_workflow_rejects_unbound_or_incomplete_verdict[candidate]
tests/test_workflow_e2e.py::test_workflow_rejects_unbound_or_incomplete_verdict[worker]
tests/test_workflow_e2e.py::test_workflow_rejects_unbound_or_incomplete_verdict[verifier]
tests/test_workflow_e2e.py::test_workflow_rejects_unbound_or_incomplete_verdict[missing]
tests/test_workflow_e2e.py::test_workflow_rejects_unbound_or_incomplete_verdict[duplicate]
tests/test_workflow_e2e.py::test_workflow_rejects_unbound_or_incomplete_verdict[unknown]
tests/test_workflow_e2e.py::test_workflow_rejects_unbound_or_incomplete_verdict[path]
tests/test_workflow_e2e.py::test_workflow_rejects_unbound_or_incomplete_verdict[session]
tests/test_workflow_e2e.py::test_workflow_rejects_unbound_or_incomplete_verdict[dirty]
tests/test_workflow_e2e.py::test_workflow_corrections_are_bounded_and_fresh
tests/test_workflow_e2e.py::test_workflow_recovery_uses_new_revision_no_late_acceptance[cancel]
tests/test_workflow_e2e.py::test_workflow_recovery_uses_new_revision_no_late_acceptance[expire]
tests/test_workflow_e2e.py::test_workflow_recovery_uses_new_revision_no_late_acceptance[reconcile]
tests/test_workflow_e2e.py::test_workflow_recovery_uses_new_revision_no_late_acceptance[failed]
tests/test_workflow_e2e.py::test_workflow_recovery_uses_new_revision_no_late_acceptance[interrupted]
tests/test_workflow_e2e.py::test_workflow_recovery_uses_new_revision_no_late_acceptance[missing_evidence]
tests/test_workflow_e2e.py::test_workflow_recovery_uses_new_revision_no_late_acceptance[missing_verdict]
tests/test_workflow_e2e.py::test_workflow_permissions_claims_and_metadata_fences
tests/test_workflow_e2e.py::test_workflow_indexed_list_performance_synthetic_tasks[50]
tests/test_workflow_e2e.py::test_workflow_indexed_list_performance_synthetic_tasks[500]
tests/test_workflow_e2e.py::test_workflow_indexed_list_performance_synthetic_tasks[5000]
tests/test_workflow_e2e.py::test_verifier_must_start_fresh_and_worker_cannot_accept
tests/test_workflow_e2e.py::test_cancel_racing_acceptance_serializes_and_never_reopens
tests/test_workflow_e2e.py::test_server_reaps_expired_managed_execution_once_without_replay
tests/test_workflow_e2e.py::test_dispatch_respects_node_capacity_and_verifier_keeps_the_worker_slot
tests/test_workflow_e2e.py::test_a_blocked_task_reaches_the_phone_when_the_mac_is_away[False]
tests/test_workflow_e2e.py::test_a_blocked_task_reaches_the_phone_when_the_mac_is_away[True]
tests/test_workflow_e2e.py::test_with_project_copies_off_events_are_written_as_before
tests/test_workflow_e2e.py::test_a_project_without_a_mac_still_reaches_each_of_its_phones_once
tests/test_workflow_e2e.py::test_more_events_in_one_instant_than_a_page_can_hold_are_paged_without_loss
tests/test_workflow_e2e.py::test_a_backlog_written_in_one_instant_is_paged_without_loss[False]
tests/test_workflow_e2e.py::test_a_backlog_written_in_one_instant_is_paged_without_loss[True]
tests/test_workflow_e2e.py::test_a_feed_cursor_handed_out_with_project_copies_is_read_after_switching_them_off
tests/test_workflow_e2e.py::test_an_event_committed_after_the_mac_read_past_its_instant_still_arrives[earlier_instant-False]
tests/test_workflow_e2e.py::test_an_event_committed_after_the_mac_read_past_its_instant_still_arrives[earlier_instant-True]
tests/test_workflow_e2e.py::test_an_event_committed_after_the_mac_read_past_its_instant_still_arrives[same_instant-False]
tests/test_workflow_e2e.py::test_an_event_committed_after_the_mac_read_past_its_instant_still_arrives[same_instant-True]
tests/test_workflow_e2e.py::test_a_forgotten_open_transaction_holds_the_feed_back_only_for_the_settle_limit
tests/test_workflow_e2e.py::test_switching_project_copies_off_inside_a_crowded_instant_finishes_it
tests/test_workflow_e2e.py::test_pushes_of_project_copies_survive_a_rollback
tests/test_workflow_e2e.py::test_workflow_successor_can_hand_a_finished_worker_to_its_verifier
tests/test_workflow_e2e.py::test_criteria_the_worker_reports_unmet_go_to_the_verifier
tests/test_workflow_e2e.py::test_criteria_the_worker_reports_unmet_without_a_verifier_are_corrected_within_the_budget
tests/test_workflow_e2e.py::test_openrouter_verifier_is_not_offered_after_account_report_changes[None]
tests/test_workflow_e2e.py::test_openrouter_verifier_is_not_offered_after_account_report_changes[health1]
tests/test_workflow_e2e.py::test_openrouter_verifier_is_not_offered_after_account_report_changes[health2]
tests/test_workflow_e2e.py::test_openrouter_verifier_is_not_offered_after_account_report_changes[health3]
tests/test_workflow_e2e.py::test_openrouter_verifier_is_not_offered_after_account_report_changes[health4]
tests/test_workflow_e2e.py::test_openrouter_verifier_is_not_offered_after_account_report_changes[health5]
tests/test_workflow_retire.py::test_retire_preserves_history_and_allows_receipted_completion[blocked]
tests/test_workflow_retire.py::test_retire_preserves_history_and_allows_receipted_completion[cancelled]
tests/test_workflow_retire.py::test_retire_refuses_non_retirable_phases[queued]
tests/test_workflow_retire.py::test_retire_refuses_non_retirable_phases[running]
tests/test_workflow_retire.py::test_retire_refuses_non_retirable_phases[done]
tests/test_workflow_retire.py::test_retire_requires_nonblank_bounded_reason[None]
tests/test_workflow_retire.py::test_retire_requires_nonblank_bounded_reason[]
tests/test_workflow_retire.py::test_retire_requires_nonblank_bounded_reason[ \t\n]
tests/test_workflow_retire.py::test_retire_requires_nonblank_bounded_reason[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]
tests/test_workflow_retire.py::test_retire_omitted_reason_rejected_and_boundaries_accepted
tests/test_workflow_retire.py::test_retire_preserves_monotonic_revision_sequence
tests/test_workflow_retire.py::test_retire_obeys_admin_version_and_project_guards[contributor]
tests/test_workflow_retire.py::test_retire_obeys_admin_version_and_project_guards[version]
tests/test_workflow_retire.py::test_retire_obeys_admin_version_and_project_guards[binding]
tests/test_workflow_retire.py::test_retire_obeys_admin_version_and_project_guards[foreign_project]
tests/test_workflow_retire.py::test_execution_credential_cannot_retire
tests/test_workflow_retire.py::test_retire_racing_late_event_cannot_rewrite_task_or_execution[blocked]
tests/test_workflow_retire.py::test_retire_racing_late_event_cannot_rewrite_task_or_execution[cancelled]
Blocker:
what: K2 full suite exits 1 with 55 failures and 5 errors; PostgreSQL reset/backend-termination privileges and shell here-document temporary-file creation are denied.
who_moves: coordinator, then the Bridge environment operator
needed: re-dispatch in an already prepared test environment with the required database capabilities and shell temporary-file support; rerun python scripts/test_postgres.py -p no:cacheprovider. No worker install or privilege change.
All required checks ran; the full suite completed rather than being interrupted.
Production behavior, deployment, and independent acceptance were not run.
Raw full-run log SHA-256: 9bc59d7b64a889c185a72feed341c06465449586bf8266d8f30cf73d01075778.
Captured JUnit SHA-256: 72b4914af3c70a7d2f5c68331c616841413fb77856e47b8d6439d09fac7cba83.
Two focused diagnostics reproduced execution limitations outside the patch:
$ python scripts/test_postgres.py tests/test_backup_state_marker.py -x -p no:cacheprovider
E asyncpg.exceptions.InsufficientPrivilegeError: permission denied for function pg_stat_reset
FAILED tests/test_backup_state_marker.py::test_a_statistics_reset_never_repeats_an_earlier_marker
1 failed, 7 passed in 4.68s
exit: 1
$ python scripts/test_postgres.py tests/test_deployment_guard.py -x -p no:cacheprovider
ops/deploy-heyaira.sh: line 856: cannot create temp file for here document: Operation not permitted
FAILED tests/test_deployment_guard.py::test_failed_health_rolls_back_with_overlay_and_previous_revision
1 failed, 4 passed in 1.92s
exit: 1
These ran at implementation HEAD 2ff858b in the worktree root against
new disposable databases. The deployment tests use synthetic commands;
no real deployment was attempted. Neither limit was bypassed or granted
additional privileges. K2 permits only listening-socket skips, so these
limitations cannot be counted as an accepted exception.
K3 — pass¶
At the worktree root, implementation tree subsequently committed as 2ff858b:
$ PYTHONPATH=src python scripts/check_docs_contract.py
documentation contract passed: 48 MCP tools covered
exit: 0
$ PYTHONPATH=src python scripts/export_mcp_contract.py --check
MCP contract is up to date
exit: 0
$ git diff --check
exit: 0; no whitespace errors
K4 — pass¶
At implementation HEAD 2ff858b, worktree root:
$ git diff --name-only 0bcb6a6..HEAD
docs/SERVER_BEAT_LIMITS.md
docs/operations/bridge-request-failures.md
src/heyaira/server_beat.py
tests/test_bridge_pickup.py
exit: 0
$ git merge-base --is-ancestor 0bcb6a66ffa5a9857cf0d2ffc124573183a53622 HEAD
exit: 0
The evidence commit adds only docs/reports/0a692b96-pickup-evidence.md.
The final snapshot has only these five authorized paths. Scope, ancestry
and whitespace are checked again after the evidence commit; the RESULT
receipt records its SHA and those actual results.
Both documentation commands were repeated after the complete evidence file
was added, with the same output above and exit 0. git diff --check and
git diff --cached --check are clean for the evidence snapshot.
Criterion records¶
criterion_id: K1
outcome: pass
evidence_path: docs/reports/0a692b96-pickup-evidence.md
feedback: The required PostgreSQL pickup command exits 1 on the isolated base with T1/T2/T4 failing, and exits 0 on implementation HEAD with all 40 passing; T3 and both T5 cases pass. The pickup/background command exits 0 with 45 passing.
criterion_id: K2
outcome: fail
evidence_path: docs/reports/0a692b96-pickup-evidence.md
feedback: The required full command exits 1 with 55 failures, 1508 passed, 495 listening-socket skips and 5 errors. PostgreSQL privilege and shell temporary-file denials exceed the sole permitted skip exception. Every skipped name is listed above. Failure kind: environment.
criterion_id: K3
outcome: pass
evidence_path: docs/reports/0a692b96-pickup-evidence.md
feedback: Both named documentation/MCP commands exit 0; git diff --check is clean.
criterion_id: K4
outcome: pass
evidence_path: docs/reports/0a692b96-pickup-evidence.md
feedback: The result changes only src/, tests/ and docs/; the source SHA is an ancestor. Named Git methods exit 0; final evidence adds only the report path in docs/.