fix(orchestrator-core): emit bare native id for plugin-resolved subjects - #334
Open
Shooksie wants to merge 1 commit into
Open
fix(orchestrator-core): emit bare native id for plugin-resolved subjects#334Shooksie wants to merge 1 commit into
Shooksie wants to merge 1 commit into
Conversation
set to , which for plugin-resolved built-in task/requirement subjects is the KIND-QUALIFIED id () — the dispatch layer keeps built-in ids qualified for queue-key parity with the path. The workflow runner feeds into its template var, which must be the BARE native id (); a qualified value produces invalid git branch names like (colon is illegal) and breaks workspace assumptions. Strip the leading qualifier so the plugin-resolved path matches the in-tree adapter's bare-id convention. Stripping is precise: only a prefix that case-insensitively equals the subject's or its short last-dotted-segment alias ( for ) is removed, so ids that legitimately contain a colon are untouched. Mirrors the existing in orchestrator-daemon-runtime's dispatch command builder (duplicated because that crate depends on orchestrator-core, not the reverse). Adds unit tests for the qualified/full/bare/dynamic/unrelated-colon cases. NOTE: not built or tested locally — ao-cli builds/tests run on ephemeral nodes/CI per project policy. Needs node/CI build+test validation.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
in constructed the with .
For plugin-resolved subjects (the path used when subject data lives in a plugin — e.g. a nested node proxying an upstream board), returns the kind-qualified id (). The dispatch layer deliberately keeps built-in task/requirement ids qualified so their queue key stays in lockstep with the enqueue path (see ).
The workflow runner (, ) sets its template var from , and that var must be the bare native id (). A qualified value:
The in-tree (non-plugin) adapter path already emits the bare id (its store keys on the bare id, so a qualified id would miss the lookup entirely). This change makes the plugin-resolved path consistent with it.
Fix
Tests
Adds unit tests for / covering: short-alias-qualified task ( → ), full-namespaced-qualified requirement ( → ), already-bare dynamic kind, qualified dynamic kind, and an unrelated-colon id that must survive untouched.
Per project policy, ao-cli builds/tests run on ephemeral nodes/CI, not locally — this change was not compiled or tested here. was applied (file parses clean) but /
running 361 tests
test daemon_config::tests::daemon_project_config_serializes_none_runtime_fields_omitted ... ok
test config::tests::falls_through_to_cwd_when_cli_arg_missing ... ok
test doctor::tests::path_is_executable_requires_execute_permission ... ok
test config::tests::cli_project_root_wins ... ok
test daemon_config::tests::resolve_silent_threshold_defaults_when_unset ... ok
test daemon_config::tests::load_daemon_project_config_defaults_when_missing ... ok
test daemon_config::tests::daemon_project_config_deserializes_missing_runtime_fields_as_none ... ok
test daemon_config::tests::resolve_silent_threshold_reads_configured_value ... ok
test config::tests::cache_kill_switch_disables_caching ... ok
test domain_state::tests::history_record_round_trips_run_id ... ok
test domain_state::tests::history_record_without_run_id_still_loads_and_omits_field ... ok
test daemon_config::tests::daemon_project_config_round_trips_runtime_fields ... ok
test execution_projection::project_requirement_workflow_status::tests::requirement_task_generation_run_projects_in_progress ... ok
test execution_projection::project_requirement_workflow_status::tests::requirement_task_generation_projects_planned ... ok
test execution_projection::project_requirement_workflow_status::tests::unrelated_workflow_ref_does_not_mutate_requirement_status ... ok
test execution_projection::tests::foreign_blocked_reason_is_not_clobbered_or_cleared ... ok
test execution_projection::tests::detail_less_repause_does_not_downgrade_enriched_marker ... ok
test execution_projection::tests::bare_pause_marker_is_upgraded_to_carry_budget_detail ... ok
test execution_projection::tests::is_workflow_paused_reason_matches_bare_and_enriched_markers ... ok
test execution_projection::tests::old_bare_marker_still_clears_on_resume ... ok
test execution_projection::tests::paused_marker_carries_budget_detail_and_resume_clears_it ... ok
test execution_projection::tests::project_execution_fact_reports_unknown_subject_kind_as_unprojected ... ok
test execution_projection::tests::project_execution_fact_does_not_auto_mark_task_done_on_success ... ok
test execution_projection::tests::project_execution_fact_does_not_auto_mark_done_for_legacy_facts ... ok
test config::tests::falls_back_to_current_dir_outside_git_repo ... ok
test daemon_config::tests::daemon_project_config_preserves_unknown_fields ... ok
test execution_projection::tests::workflow_paused_reason_formats_bare_and_enriched ... ok
test flavor::tests::all_plugin_slugs_collects_required_and_optional_recommendations ... ok
test flavor::tests::bundled_default_flavor_required_set_covers_daemon_preflight_roles ... ok
test flavor::tests::parses_and_validates_v1_manifest ... ok
test flavor::tests::rejects_unknown_schema ... ok
test flavor::tests::required_plugins_tags_each_slug_with_its_role ... ok
test daemon_config::tests::daemon_project_config_loads_legacy_idle_timeout_field ... ok
test flavor::tests::bundled_fallback_loads_when_no_manifest_on_disk ... ok
test daemon_config::tests::daemon_project_config_loads_legacy_auto_policy_fields ... ok
test doctor::tests::run_for_project_marks_invalid_daemon_config_as_fail ... ok
test doctor::tests::run_for_project_marks_expected_core_files_as_ok_when_present ... ok
test doctor::tests::run_for_project_marks_non_directory_ao_path_as_fail ... ok
test doctor::tests::run_for_project_marks_project_root_file_as_fail ... ok
test plugin_preflight::tests::auto_install_failure_fix_command_includes_allow_shadow_builtin ... ok
test plugin_preflight::tests::flavor_manifest_error_fails_preflight_even_with_no_missing_roles ... ok
test plugin_preflight::tests::flavor_manifest_error_leads_rendered_message_and_suppresses_install_advice ... ok
test plugin_preflight::tests::install_target_for_resolves_role_labels_to_repo_specs ... ok
test plugin_preflight::tests::install_target_for_resolves_workflow_runner_and_queue_roles ... ok
test plugin_preflight::tests::missing_roles_without_flavor_error_keep_install_advice_template ... ok
test plugin_preflight::tests::multiple_missing_roles_render_one_composed_flavor_fix_command ... ok
test plugin_preflight::tests::preflight_refuses_when_workflow_runner_or_queue_plugin_missing ... ok
test plugin_preflight::tests::preflight_satisfied_when_subject_backend_covers_all_required_kinds ... ok
test plugin_preflight::tests::preflight_with_auto_install_but_install_still_does_not_cover_role_reports_missing ... ok
test plugin_preflight::tests::preflight_with_auto_install_installs_missing_plugin_and_marks_satisfied ... ok
test plugin_preflight::tests::preflight_with_no_plugins_and_no_auto_install_reports_missing_with_fix_commands ... ok
test plugin_preflight::tests::preflight_with_provider_installed_marks_provider_role_satisfied ... ok
test plugin_preflight::tests::provider_missing_preflight_suggests_command_that_actually_works ... ok
test plugin_preflight::tests::queue_underpin_warning_fires_below_floor ... ok
test plugin_preflight::tests::queue_underpin_warning_ignores_unparseable_versions ... ok
test plugin_preflight::tests::queue_underpin_warning_silent_at_or_above_floor ... ok
test plugin_preflight::tests::single_missing_role_keeps_per_role_fix_without_composed_command ... ok
test plugin_preflight::tests::summarize_with_lock_is_identity_when_lockfile_absent ... ok
test plugin_preflight::tests::summarize_with_lock_translates_native_subject_kind_to_installed_kind ... ok
test plugin_preflight::tests::workflow_runner_underpin_warning_fires_below_floor ... ok
test plugin_preflight::tests::workflow_runner_underpin_warning_ignores_unparseable_versions ... ok
test plugin_preflight::tests::workflow_runner_underpin_warning_silent_at_or_above_floor ... ok
test plugin_registry::tests::all_provider_plugins_have_non_empty_tags ... ok
test plugin_registry::tests::all_subject_plugins_have_non_empty_tags ... ok
test plugin_registry::tests::provider_default_is_claude_at_curated_tag ... ok
test plugin_registry::tests::subject_kind_requirement_resolves_to_subject_requirements ... ok
test plugin_registry::tests::subject_kind_task_resolves_to_subject_default ... ok
test plugin_registry::tests::unknown_subject_kind_returns_none ... ok
test doctor::tests::run_for_project_reports_warns_for_missing_bootstrap_files ... ok
test principal::tests::bootstrap_refuses_to_overwrite_existing_file ... ok
test principal::tests::enforce_mode_admin_role_allows_everything ... ok
test principal::tests::enforce_mode_daemon_always_allowed ... ok
test principal::tests::enforce_mode_denies_unknown_principal ... ok
test principal::tests::enforce_mode_viewer_role_allows_only_reads ... ok
test principal::tests::principal_id_and_kind_labels_are_stable ... ok
test principal::tests::principal_serializes_with_kind_tag ... ok
test principal::tests::rbac_mode_serializes_kebab_case ... ok
test principal::tests::resolve_by_os_user_walks_os_users_list ... ok
test principal::tests::single_user_mode_allows_everything ... ok
test runtime_contract::tests::build_launch_contract_enforces_machine_output_for_supported_tools ... ok
test runtime_contract::tests::build_launch_contract_preserves_opencode_glm_and_minimax_models ... ok
test runtime_contract::tests::build_launch_contract_supports_resume_mode ... ok
test principal::tests::bootstrap_writes_default_file_when_absent ... ok
test runtime_contract::tests::build_runtime_contract_enforces_mcp_only_when_supported_tool_has_endpoint ... ok
test runtime_contract::tests::build_runtime_contract_includes_rich_cli_shape ... ok
test runtime_contract::tests::cli_tool_flags_resolve_from_config_supplied_tool_metadata ... ok
test execution_projection::tests::project_schedule_dispatch_missed_does_not_update_last_run ... ok
test secret_device_store::tests::file_is_not_plaintext ... ok
test execution_projection::tests::project_schedule_dispatch_attempt_updates_last_run_and_run_count ... ok
test secret_keysource::tests::device_id_is_deterministic_and_binds_to_machine_material ... ok
test secret_keysource::tests::key_source_kind_parse_round_trips ... ok
test model_quality::tests::suppression_requires_min_attempts ... ok
test secret_keysource::tests::user_key_accepts_hex_and_base64_and_rejects_wrong_length ... ok
test secret_store::tests::enforce_cap_fails_over_limit ... ok
test secret_store::tests::enforce_cap_passes_under_limit ... ok
test secret_store::tests::keychain_service_name_includes_scope ... ok
test secret_device_store::tests::round_trip_set_get_list_delete ... ok
test secret_store::tests::mock_store_round_trip ... ok
test secret_store::tests::snapshot_returns_all_pairs ... ok
test secret_store::tests::validate_key_accepts_standard_env_shape ... ok
test secret_store::tests::validate_key_rejects_bad_shapes ... ok
test model_quality::tests::suppression_triggers_at_threshold ... ok
test model_quality::tests::suppression_is_phase_scoped ... ok
test services::daemon_impl::tests::daemon_health_cache_expires_after_ttl ... ok
test secret_device_store::tests::tamper_fails_closed ... ok
test services::daemon_impl::tests::daemon_health_cache_returns_stored_value_within_ttl ... ok
test secret_device_store::tests::wrong_device_key_cannot_decrypt ... ok
test execution_projection::tests::project_schedule_dispatch_missed_then_attempt_separates_counters ... ok
test model_quality::tests::unknown_verdict_counts_as_fail ... ok
test services::daemon_impl::tests::daemon_health_cache_keys_isolate_by_project_root ... ok
test services::daemon_impl::tests::parse_runtime_pause_state_defaults_when_unpaused_or_invalid ... ok
test services::daemon_impl::tests::parse_runtime_pause_state_reads_paused_record ... ok
test config::tests::repeat_calls_hit_in_process_cache ... ok
test services::planning_shared::requirement_lifecycle::tests::requirement_lifecycle_can_rework_then_approve ... ok
test services::planning_shared::requirement_lifecycle::tests::requirement_lifecycle_happy_path_approves ... ok
test services::planning_shared::requirement_lifecycle::tests::requirement_lifecycle_respects_rework_budget ... ok
test services::review_impl::tests::request_handoff_requires_run_id ... ok
test config::tests::resolves_repo_root_from_git_subdirectory ... ok
test config::tests::cached_cwd_lookup_preserves_git_repo_source ... ok
test services::state_store::tests::mutation_loader_rejects_invalid_core_state_json ... ok
test services::state_store::tests::mutation_loader_returns_default_when_state_file_is_missing ... ok
test services::tests::execute_requirements_blocks_when_vision_constraints_are_not_covered ... ok
test model_quality::tests::suppression_clears_after_recovery ... ok
test services::tests::execute_requirements_can_include_wont_with_opt_in ... ok
test services::tests::execute_requirements_excludes_wont_by_default ... ok
test model_quality::tests::rework_verdict_increments_reworks_not_fails ... ok
test services::tests::execute_requirements_generates_stable_task_titles ... ok
test services::tests::execute_requirements_runs_requirement_state_machine_before_task_materialization ... ok
test services::tests::execute_requirements_maps_requirement_priority_to_task_priority ... ok
test secret_store::tests::keyring_store_index_round_trip ... ok
test model_quality::tests::advance_verdict_lifts_suppression_over_time ... ok
test services::daemon_impl::tests::fast_snapshot_returns_stopped_for_empty_project ... ok
test services::daemon_impl::tests::fast_snapshot_does_not_open_sqlite ... ok
test services::review_impl::tests::transcript_path_uses_project_state_dir ... ok
test services::schedule_state::tests::load_missing_schedule_state_returns_default ... ok
test services::schedule_state::tests::save_and_load_schedule_state_round_trip ... ok
test services::daemon_impl::tests::fast_snapshot_matches_full_snapshot_status_for_empty_project ... ok
test services::daemon_impl::tests::file_hub_start_does_not_spawn_runner_sidecar ... ok
test services::daemon_impl::tests::file_hub_start_sets_running ... ok
test config::tests::relative_cli_arg_keys_include_cwd ... ok
test config::tests::resolves_primary_repo_root_from_linked_worktree ... ok
test services::tests::file_hub_bootstraps_architecture_docs_file ... ok
test services::tests::file_hub_bootstraps_workflow_yaml_with_phase_catalog ... ok
test config::tests::cli_project_root_dot_in_linked_worktree_resolves_primary_repo_root ... ok
test services::tests::file_hub_errors_when_requested_pipeline_is_missing_from_config ... ok
test secret_keysource::tests::passphrase_is_deterministic_per_salt_and_varies_by_salt ... ok
test services::daemon_impl::tests::daemon_health_cache_invalidated_by_lifecycle_mutations ... ok
test services::tests::file_hub_explicit_git_bootstrap_initializes_repository_and_head ... ok
test services::tests::file_hub_new_bootstraps_ao_without_initializing_git_repository ... ok
test services::tests::file_hub_mutations_fail_closed_for_invalid_core_state_json ... ok
test services::tests::file_hub_new_bootstraps_base_configs_for_project_path ... ok
test services::tests::in_memory_hub_with_project_root_engages_plugin_fallback ... ok
test services::tests::in_memory_hub_without_project_root_skips_plugin_fallback ... ok
test services::tests::file_hub_new_does_not_rewrite_existing_core_state_on_boot ... ok
test services::tests::file_hub_daemon_mutation_interleaves_with_task_create_without_lost_updates ... ok
test services::tests::planning_draft_requirements_preserves_vision_constraints_when_max_is_small ... ok
test services::tests::file_hub_concurrent_task_creates_keep_unique_ids ... ok
test services::tests::planning_service_drafts_and_executes_requirements ... ok
test services::tests::planning_service_query_filters_and_sorts_requirements ... ok
test services::tests::requirements_refine_propagates_research_metadata_to_tasks ... ok
test services::tests::set_status_from_blocked_to_ready_clears_paused_and_blocked_fields ... ok
test services::tests::task_filter_supports_linked_architecture_entity ... ok
test services::tests::task_priority_policy_reports_active_high_budget_overflow ... ok
test services::tests::task_priority_rebalance_plan_is_deterministic_and_budget_compliant ... ok
test services::tests::task_priority_rebalance_rejects_conflicting_override_task_ids ... ok
test services::tests::task_service_query_returns_stable_paginated_priority_order ... ok
test services::tests::task_service_rejects_unknown_architecture_entities ... ok
test services::tests::task_service_supports_priority_checklists_and_dependencies ... ok
test services::tests::update_status_from_on_hold_to_in_progress_clears_paused_and_blocked_fields ... ok
test services::tests::file_hub_recompiles_repo_workflow_yaml_on_startup ... ok
test services::tests::workflow_service_query_filters_by_status_and_reference ... ok
test services::trigger_state::tests::load_missing_trigger_state_returns_default ... ok
test services::trigger_state::tests::lock_trigger_state_is_exclusive ... ok
test services::tests::file_hub_subject_resolver_engages_plugin_fallback ... ok
test state_machine_parity::workflow_failed_state_can_resume_for_retry ... ok
test services::trigger_state::tests::save_and_load_trigger_state_round_trip ... ok
test state_machines::engine::tests::builtin_workflow_machine_marks_merge_conflict_as_non_terminal ... ok
test state_machines::engine::tests::compile_builtin_document ... ok
test state_machines::engine::tests::evaluate_guard_checks_correct_phase ... ok
test state_machines::engine::tests::evaluate_guard_rework_budget_available_when_at_limit ... ok
test state_machines::engine::tests::evaluate_guard_rework_budget_available_when_no_reworks_yet ... ok
test state_machines::engine::tests::evaluate_guard_rework_budget_available_when_over_limit ... ok
test state_machines::engine::tests::evaluate_guard_rework_budget_available_when_under_limit ... ok
test state_machines::engine::tests::evaluate_guard_rework_budget_available_with_zero_max ... ok
test state_machines::engine::tests::evaluate_guard_unknown_guard_passes ... ok
test state_machines::engine::tests::full_lifecycle_happy_path ... ok
test state_machines::engine::tests::full_lifecycle_with_rework ... ok
test state_machines::engine::tests::guard_blocked_falls_through_to_unguarded ... ok
test state_machines::engine::tests::guard_blocked_returns_error ... ok
test state_machines::engine::tests::no_transition_cancelled_start ... ok
test state_machines::engine::tests::no_transition_completed_phase_started ... ok
test state_machines::engine::tests::no_transition_failed_gates_passed ... ok
test services::tests::file_hub_concurrent_requirement_upserts_keep_unique_ids ... ok
test state_machines::engine::tests::no_transition_idle_phase_succeeded ... ok
test state_machines::engine::tests::no_transition_paused_phase_succeeded ... ok
test state_machines::engine::tests::no_transition_run_phase_start ... ok
test state_machines::engine::tests::requirement_guard_blocks_transition_when_budget_exceeded ... ok
test state_machines::engine::tests::requirement_lifecycle_blocks_rework_when_budget_exceeded ... ok
test state_machines::engine::tests::requirement_lifecycle_uses_evaluate_guard_for_rework_budget ... ok
test state_machines::engine::tests::state_unchanged_on_guard_blocked_error ... ok
test state_machines::engine::tests::state_unchanged_on_no_transition_error ... ok
test state_machines::engine::tests::valid_cancel_from_idle ... ok
test state_machines::engine::tests::valid_apply_transition_no_more_phases ... ok
test state_machines::engine::tests::valid_cancel_from_paused ... ok
test state_machines::engine::tests::valid_cancel_from_run_phase ... ok
test state_machines::engine::tests::valid_evaluate_gates_gates_passed ... ok
test state_machines::engine::tests::valid_evaluate_transition_phase_started ... ok
test state_machines::engine::tests::valid_idle_start ... ok
test state_machines::engine::tests::valid_pause_from_evaluate_gates ... ok
test state_machines::engine::tests::valid_pause_from_idle ... ok
test state_machines::engine::tests::valid_pause_from_run_phase ... ok
test state_machines::engine::tests::valid_run_phase_phase_failed ... ok
test state_machines::engine::tests::valid_run_phase_phase_skipped ... ok
test state_machines::engine::tests::valid_run_phase_phase_succeeded ... ok
test state_machines::engine::tests::workflow_apply_uses_ordered_first_match ... ok
test services::tests::file_hub_persists_tasks ... ok
test services::tests::file_hub_persists_planning_artifacts ... ok
test state_machines::tests::invalid_file_falls_back_in_json_mode ... ok
test state_machines::validator::tests::builtin_definition_validates ... ok
test state_machines::validator::tests::invalid_guard_reference_is_rejected ... ok
test state_machines::validator::tests::machine_missing_executor_required_transition_is_rejected ... ok
test state_machines::tests::strict_mode_errors_when_file_is_invalid ... ok
test state_machines::tests::missing_file_falls_back_in_json_mode ... ok
test store::tests::fsync_dir_succeeds_on_existing_directory ... ok
test subject_adapter::adapter::tests::build_context_from_plugin_keeps_bare_dynamic_id ... ok
test subject_adapter::adapter::tests::build_context_from_plugin_preserves_unrelated_colon_id ... ok
test subject_adapter::adapter::tests::build_context_from_plugin_strips_full_namespaced_kind_prefix ... ok
test subject_adapter::adapter::tests::build_context_from_plugin_strips_qualified_dynamic_prefix ... ok
test subject_adapter::adapter::tests::build_context_from_plugin_strips_qualified_task_prefix ... ok
test state_machine_parity::workflow_transition_matrix_matches_legacy_behavior ... ok
test subject_adapter::adapter::tests::builtin_project_adapter_returns_project_root_for_requirement_subjects ... ok
test subject_adapter::adapter::tests::builtin_subject_resolver_uses_requirement_adapter_registry ... ok
test subject_adapter::adapter::tests::ensure_execution_cwd_routes_in_tree_task_through_adapter_even_after_task_take ... ok
test subject_adapter::adapter::tests::ensure_execution_cwd_uses_project_root_for_plugin_owned_task ... ok
test store::tests::fsync_rename_promotes_temp_to_final_and_makes_it_readable ... ok
test subject_adapter::adapter::tests::managed_worktree_mcp_config_falls_back_to_primary_repo_manifest_path ... ok
test subject_adapter::adapter::tests::resolve_falls_back_to_plugin_when_in_tree_requirement_adapter_errors ... ok
test subject_adapter::adapter::tests::resolve_falls_back_to_plugin_when_in_tree_task_adapter_errors ... ok
test subject_adapter::adapter::tests::resolve_reports_both_errors_when_fallback_also_misses ... ok
test subject_adapter::adapter::tests::strip_leading_kind_prefix_only_strips_matching_kind ... ok
test types::tests::phase_decision_deserializes_with_expected_defaults ... ok
test types::tests::phase_decision_deserializes_unknown_verdict_with_fallback ... ok
test types::tests::phase_decision_no_changes_needed_evidence_serializes ... ok
test types::tests::phase_decision_serializes_with_evidence_payload ... ok
test types::tests::requirement_priority_to_task_priority_mapping_is_stable ... ok
test types::tests::task_status_deserializes_contract_aliases_and_helpers_stay_consistent ... ok
test types::tests::task_type_as_str_matches_canonical_serialization_and_aliases ... ok
test workflow::journal_client::tests::actor_blob_key_is_stripped_before_deserialization ... ok
test store::tests::write_json_atomic_round_trip_persists_value_durably ... ok
test workflow::journal_client::tests::durable_journal_inactive_without_plugin ... ok
test state_machines::tests::write_state_machines_document_is_atomic_and_readable ... ok
test workflow::journal_client::tests::import_is_a_noop_for_sqlite_backend ... ok
test workflow::journal_client::tests::journal_run_round_trips_through_blob ... ok
test workflow::journal_client::tests::kill_switch_forces_sqlite ... ok
test workflow::journal_client::tests::no_plugin_installed_resolves_to_sqlite ... ok
test workflow::journal_client::tests::subject_id_blob_key_is_stripped_before_deserialization ... ok
test workflow::journal_client::tests::to_journal_run_records_subject_id_for_generic_baas_kind ... ok
test workflow::journal_client::tests::to_journal_run_records_subject_id_for_task_kind ... ok
test workflow::phase_plan::tests::phase_plan_fallback_normalizes_legacy_refs ... ok
Initialized empty Git repository in /private/var/folders/_t/qq6w856d3p5_tnsm80nw5k240000gn/T/ao-subject-adapter-task-1784227415581584000/.git/
test services::tests::file_hub_persists_workflows_with_machine_state ... ok
test workflow::phase_plan::tests::resolve_phase_plan_errors_when_legacy_workflow_config_exists_without_v2 ... ok
test services::tests::file_hub_yaml_only_repo_executes_workflow_without_json_config ... ok
test services::tests::file_hub_uses_custom_pipeline_from_workflow_config_v2 ... ok
test workflow::journal_client::tests::import_empty_sqlite_writes_marker_and_imports_nothing ... ok
test workflow::journal_client::tests::import_skips_when_marker_present ... ok
test workflow::phase_plan::tests::resolve_phase_plan_errors_when_pipeline_is_missing_from_config ... ok
test services::tests::persist_dirty_to_sqlite_rolls_back_all_entities_on_partial_failure ... ok
test services::tests::file_hub_delete_requirement_removes_sqlite_row_and_does_not_resurrect ... ok
test services::tests::file_hub_complete_phase_with_decision_honors_rework_routing ... ok
test workflow::phase_plan::tests::resolve_phase_plan_errors_when_workflow_config_is_invalid ... ok
test workflow::tests::advance_can_follow_agent_selected_target_when_yaml_allows_it ... ok
test workflow::tests::advance_ignores_agent_target_phase_and_uses_default_order ... ok
test workflow::tests::backoff_calculation ... ok
test workflow::tests::bootstrap_derives_status_from_machine_state ... ok
test workflow::tests::cancel_keeps_status_synced_with_machine_state ... ok
test workflow::tests::default_max_attempts_is_3_when_no_config ... ok
test workflow::tests::executor_backoff_delay_for_phase_returns_correct_values ... ok
test workflow::tests::failed_phase_keeps_status_synced_with_machine_state ... ok
test workflow::tests::lifecycle_does_not_pause_completed_workflow ... ok
test workflow::tests::lifecycle_double_pause_is_noop ... ok
test workflow::tests::lifecycle_marks_completed_workflow_as_merge_conflict ... ok
test workflow::tests::lifecycle_resolves_merge_conflict_and_clears_failure_reason ... ok
test workflow::tests::lifecycle_resume_on_running_is_noop ... ok
test workflow::tests::lifecycle_skip_already_done_completes_workflow_early ... ok
test workflow::tests::lifecycle_skip_duplicate_cancels_workflow_early ... ok
test workflow::phase_plan::tests::resolve_phase_plan_errors_when_workflow_config_is_missing ... ok
test services::tests::execute_requirements_skips_tasks_with_active_workflow_on_file_hub ... ok
test workflow::tests::machine_state_to_workflow_status_mapping ... ok
test workflow::tests::merge_conflict_blocks_phase_failure_with_actionable_error ... ok
test workflow::tests::merge_conflict_blocks_phase_success_with_actionable_error ... ok
test workflow::tests::no_on_verdict_uses_default_advance_behavior ... ok
test workflow::tests::on_verdict_advance_skips_to_configured_phase ... ok
test workflow::tests::on_verdict_rework_routes_to_configured_phase ... ok
test workflow::tests::phase_failure_while_paused_records_failure_and_resume_restarts ... ok
test workflow::tests::phase_with_max_attempts_1_escalates_immediately_on_rework ... ok
test workflow::tests::phase_with_max_attempts_5_allows_more_retries ... ok
test workflow::tests::resume_clears_failure_and_can_complete_after_retry ... ok
[main (root-commit) 224e821] init
1 file changed, 1 insertion(+)
create mode 100644 README.md
test workflow::tests::load_stale_task_summaries_matches_in_progress_status ... ok
test workflow::phase_plan::tests::resolve_phase_plan_prefers_explicit_config_pipeline_before_alias_normalization ... ok
test workflow::tests::rework_restart_refreshes_phase_started_at ... ok
test workflow::tests::rework_routes_to_prior_phase_by_id ... ok
test workflow::tests::rework_with_nonexistent_target_falls_back_to_current_phase ... ok
test workflow::tests::rework_without_target_reruns_current_phase ... ok
test workflow::phase_plan::tests::resolve_phase_plan_requires_pack_install_for_canonical_requirement_workflow_refs ... ok
test workflow::tests::load_workflow_ref_index_decodes_compressed_workflow_blobs ... ok
test workflow::tests::select_workflow_prune_candidates_applies_status_keep_last_and_age ... ok
test workflow::tests::select_workflow_prune_candidates_saturates_oversized_age ... ok
test workflow::tests::select_workflow_prune_candidates_skips_non_terminal_runs ... ok
test workflow::tests::skip_guard_evaluator_supports_not_equals ... ok
test workflow::tests::skip_guarded_phase_any_matching_guard_causes_skip ... ok
test workflow::tests::skip_guarded_phase_does_not_skip_when_guard_does_not_match ... ok
test workflow::tests::skip_guarded_phase_skips_first_phase_on_bootstrap ... ok
test workflow::tests::skip_guarded_phase_skips_when_task_type_matches ... ok
test workflow::tests::skip_guarded_phase_with_empty_skip_if_runs_normally ... ok
test workflow::tests::skip_guarded_phases_skips_consecutive_phases ... ok
test workflow::tests::state_machine_allows_resume_from_failed ... ok
test workflow::tests::state_machine_enters_merge_conflict_from_completed ... ok
test workflow::tests::state_machine_resolves_merge_conflict_to_completed ... ok
test workflow::tests::state_machine_transitions ... ok
test workflow::phase_plan::tests::resolve_phase_plan_requires_pack_install_for_optional_pack_workflows ... ok
test workflow::journal_client::tests::import_copies_runs_and_checkpoints_and_writes_marker ... ok
test services::tests::workflow_service_exposes_decisions_and_checkpoints ... ok
test workflow::tests::resume_manager_detects_resumable_running_workflow ... ok
test services::tests::file_hub_run_persists_actor_for_lifecycle_continuation ... ok
test services::tests::file_hub_auto_prunes_checkpoints_on_completion_when_enabled ... ok
test workflow::tests::resume_manager_detects_interrupted_failed_and_escalated_workflows ... ok
test workflow::tests::state_manager_prune_runs_rejects_non_terminal_status_filter ... ok
test workflow::phase_plan::tests::resolve_phase_plan_resolves_actor_private_workflow_only_for_that_actor ... ok
test services::tests::file_hub_completion_remains_successful_when_auto_prune_errors ... ok
test workflow::phase_plan::tests::resolve_phase_plan_uses_config_default_pipeline_when_none_is_requested ... ok
test services::tests::planning_execute_starts_workflows_with_config_phase_plan ... ok
test workflow::tests::status_stays_in_sync_through_lifecycle_transitions ... ok
test workflow::tests::sync_status_derives_from_machine_state ... ok
test workflow_events::tests::cancel_leaves_done_task_untouched ... ok
test workflow_events::tests::cancel_of_completed_workflow_leaves_task_untouched ... ok
test workflow_events::tests::cancel_projects_task_to_cancelled ... ok
test workflow_events::tests::pause_annotates_task_with_pause_marker_without_flipping_status ... ok
test workflow_events::tests::pause_does_not_overwrite_existing_blocked_reason ... ok
test workflow_events::tests::pause_marker_prefix_is_stable ... ok
test workflow_events::tests::pause_of_completed_workflow_does_not_annotate_task ... ok
test workflow_events::tests::ready_reset_clears_pause_marker_after_workflow_pause ... ok
test workflow::tests::state_manager_delete_run_rejects_active_workflow ... ok
test workflow_events::tests::resume_clears_pause_marker ... ok
test workflow_runner_registry::tests::reused_pid_after_restart_is_never_live ... ok
test workflow_events::tests::resume_preserves_foreign_blocked_reason ... ok
test workflow::tests::save_checkpoint_skips_numbers_of_orphan_checkpoint_rows ... ok
test workflow::phase_plan::tests::resolve_phase_plan_uses_config_phases_for_standard_pipeline ... ok
test subject_adapter::adapter::tests::builtin_project_adapter_provisions_task_worktree_via_task_adapter ... ok
test workflow::tests::save_checkpoint_rolls_back_checkpoint_row_when_workflow_save_fails ... ok
test workflow::tests::state_manager_prune_runs_dry_run_previews_without_deleting ... ok
test workflow::tests::state_manager_cleanup_deletes_terminal_workflows_with_null_timestamps ... ok
test workflow::tests::state_manager_cleanup_deletes_old_terminal_workflows ... ok
test workflow::tests::state_manager_delete_run_removes_row_and_storage ... ok
test workflow::phase_plan::tests::resolve_phase_plan_uses_machine_installed_pack_workflows ... ok
test workflow::tests::state_manager_prune_dry_run_keeps_checkpoint_files_and_metadata ... ok
test workflow::tests::state_manager_saves_checkpoints ... ok
test workflow::tests::state_manager_prunes_checkpoints_older_than_age ... ok
test workflow::tests::state_manager_prune_runs_deletes_terminal_runs_and_storage ... ok
test workflow::tests::state_manager_prunes_to_keep_last_per_phase ... ok
test workflow::tests::state_manager_prunes_legacy_checkpoints_by_inferred_phase ... ok
test services::tests::manual_phase_approval_resume_clears_task_pause_marker ... ok
test result: ok. 361 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.20s
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s still need to run on a node/CI before merge.