@@ -558,6 +558,8 @@ function () use ( $tmp ) {
558558 $ active_rows [ $ row ['handle ' ] ?? '' ] = $ row ;
559559 }
560560 $ assert ('finalized_pr_reconcile ' , $ active_rows ['demo@head-merged ' ]['suggested_action ' ] ?? '' , 'active/no-signal report finds merged PRs by branch head ' );
561+ $ assert ('finalized_pr_reconcile ' , $ active_rows ['demo@pr-merged ' ]['suggested_action ' ] ?? '' , 'active/no-signal report includes lifecycle reconciliation candidates with merged PR evidence ' );
562+ $ assert ('lifecycle_reconciliation_candidate ' , $ active_rows ['demo@pr-merged ' ]['inventory_reason_code ' ] ?? '' , 'active/no-signal report preserves lifecycle reconciliation source reason ' );
561563 $ assert ('active_open_pr ' , $ active_rows ['demo@already-current ' ]['suggested_action ' ] ?? '' , 'active/no-signal report preserves open PRs as active ' );
562564 $ assert (106 , (int ) ( $ active_rows ['demo@head-merged ' ]['pr ' ]['number ' ] ?? 0 ), 'active/no-signal report includes PR evidence ' );
563565 $ assert ('unsafe_dirty_or_unpushed ' , $ active_rows ['demo@dirty-active ' ]['suggested_action ' ] ?? '' , 'active/no-signal report keeps dirty rows unsafe ' );
@@ -702,7 +704,7 @@ public function worktree_list( ?string $repo = null, ?string $state = null, arra
702704 $ run (sprintf ('git remote set-url origin %s ' , escapeshellarg ($ remote )), $ primary );
703705 $ assert (true , ! is_wp_error ($ finalized_dry_run ) && ( $ finalized_dry_run ['success ' ] ?? false ), 'finalized active/no-signal dry-run succeeds ' );
704706 $ assert (true , (bool ) ( $ finalized_dry_run ['dry_run ' ] ?? false ), 'finalized active/no-signal dry-run does not write ' );
705- $ assert (1 , (int ) ( $ finalized_dry_run ['summary ' ]['planned ' ] ?? 0 ), 'finalized active/no-signal dry-run plans merged PR rows only ' );
707+ $ assert (2 , (int ) ( $ finalized_dry_run ['summary ' ]['planned ' ] ?? 0 ), 'finalized active/no-signal dry-run plans merged PR rows only ' );
706708 $ assert ('' , \DataMachineCode \Workspace \WorktreeContextInjector::get_metadata ('demo@head-merged ' )['cleanup_eligible_at ' ] ?? '' , 'finalized active/no-signal dry-run leaves metadata unchanged ' );
707709 $ run ('git remote set-url origin https://github.com/acme/demo.git ' , $ primary );
708710 $ budgeted_finalized_dry_run = $ ws ->worktree_active_no_signal_finalized_apply (array ( 'dry_run ' => true , 'limit ' => 20 , 'offset ' => 0 , 'internal_budget_label ' => '1s ' , 'internal_budget_seconds ' => 1 , 'internal_budget_started ' => microtime (true ) - 1 ));
0 commit comments