acoustic-carpenter-78188
03/07/2026, 4:10 PMWatchActions response for the Run Service:
• enriched_actions[].action.id.run.name — extracted from ActionSpec JSON via GetRunName()
• enriched_actions[].action.status.start_time — mapped from action.CreatedAt
• enriched_actions[].action.status.end_time — set from action.EndedAt when the action has terminated
• enriched_actions[].action.status.attempts — set to 1 (current behavior)
• enriched_actions[].action.status.cache_status — extracted from ActionDetails JSON blob
• enriched_actions[].action.status.duration_ms — computed as EndedAt - CreatedAt when terminated
• enriched_actions[].children_phase_counts — populated by a new GetChildrenPhaseCounts repository query
Also adds GetRunName() to the Action model, GetChildrenPhaseCounts to the ActionRepo interface/implementation, and a mock update.
Why
Several fields in WatchActionsResponse.EnrichedAction were always empty despite the data being available in the DB.
Fixes #6982
Testing
• Added unit tests for convertActionToEnrichedProto covering all new fields (both with and without EndTime)
• Added unit tests for extractCacheStatus with empty and populated ActionDetails
• Added unit tests for GetRunName() on root vs child actions
• All existing tests pass: runs/service, runs/repository/impl, runs/repository/models, runs/repository/transformers, runs/service/converter, runs/test/api
flyteorg/flyteacoustic-carpenter-78188
03/11/2026, 11:15 AM