###############################################################
# ExecuteBtAction
#
# Goal:
#   action_name: A skill sequence or single skill name. For a single
#                skill this is typically the canonical CamelCase name
#                (e.g. "ArmSpaceControl"). Multiple skills may be
#                separated by commas/semicolons/spaces.
#
# Result:
#   success:     Overall success flag for the entire (possibly multi)
#                skill sequence.
#   message:     Human readable summary (e.g. "Seq{A,B}: A(OK), B(FAIL)[detail]").
#   total_skills:How many skills were requested (after parsing).
#   succeeded_skills: Number of skills that finished with success.
#
# Feedback (streamed):
#   stage:        High‑level stage label: START | WAIT | RUN | END.
#   current_skill:Name of the skill currently being processed.
#   progress:     Float in [0,1]. START of first skill => 0.0, END of last
#                 skill => 1.0. Intermediate values are proportional to
#                 (completed_skills + stage_offset)/total_skills where
#                 stage_offset is 0 for START/WAIT/RUN and 1 for END of a skill.
#   detail:       Optional detail (e.g. retry attempt, OK/FAIL, waiting cause).
###############################################################

# Goal
# epoch: Sequence epoch (monotonically increasing id assigned by Cerebrum). Used so the
#        server can reject stale goals and stop publishing feedback from older epochs.
uint32 epoch
string action_name
brain_interfaces/SkillCall[] calls

---
# Result
bool success
string message
int32 total_skills
int32 succeeded_skills

---
# Feedback
uint32 epoch
string stage
string current_skill
float32 progress
string detail
