fix(orchestrator-core): emit bare native id for plugin-resolved subjects - #334
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Review blocker (GitHub does not permit this identity to request changes on its own PR): The native-id issue is substantive, but this old head is not merge-ready: rustfmt fails and current main now includes the one-authoritative-workflow-ID and later subject-routing changes. Rebase onto current main, reproduce the qualified plugin-subject failure there, and reduce the patch to the current ownership boundary. Keep coverage for built-in, dynamic, already-bare, full-kind-qualified, and unrelated-colon IDs, then require green fmt/clippy/check/tests. |
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.
f0c609c to
4fb1d05
Compare
There was a problem hiding this comment.
VERDICT: APPROVE
No blocking findings. The change is narrowly scoped to the plugin-resolved SubjectContext construction path, strips only a matching full-kind or short-alias qualifier, preserves unrelated colon-bearing native IDs, and updates the title fallback consistently with the bare native ID contract. The focused tests cover built-in aliases, full namespaced kinds, dynamic kinds, unrelated prefixes, bare IDs, and the defensive empty-rest case. All required checks are green on head 4fb1d05d5adfe4582479fc92afd786c13406233c (rustfmt, workspace cargo-check, clippy, docs sync, dependency guardrail, smoke-help, and Vercel).
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.