Moos ivp eval mission builder
Skill cbenjamin23/moos-ivp-skills/plugins/claude/moos-ivp-skills/skills/moos-ivp-eval-mission-builder
Build or repair one self-evaluating MOOS-IvP mission by adding an evaluation layer to an ordinary mission: headless startup, pMissionEval grading, results.txt, uMayFinish/xlaunch completion, zlaunch automation, scoped teardown, and single-scenario validation.From its SKILL.md
npx -y skills add cbenjamin23/moos-ivp-skills --skill moos-ivp-eval-mission-builderAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 12 stars12 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
8.5 KB, as published. Nobody here has run it
MOOS-IvP Eval Mission Builder
Overview
Use this skill for one self-evaluating mission folder: a normal MOOS-IvP mission
with an added single-run grading contract. The mission should still be readable
and runnable by a person, but it must also run headlessly, decide pass/fail
inside the mission, write results.txt, and finish through the shared
xlaunch.sh / uMayFinish path.
For ordinary mission layout, use moos-ivp-mission-builder first. For multi-case
matrices, patch sweeps, parallel runs, or expected-vs-actual aggregation, use
moos-ivp-harness-builder. For post-run .alog evidence, use
moos-alog-analysis.
Core Rules
- Start from an ordinary mission that already launches cleanly. Prefer the
moos-ivp-mission-builderbaselines or an existing nearby mission family. - Add only the evaluation plumbing needed for one scenario:
optional
pAutoPoke, optionaluTimerScript,pMissionEval,results.txt, and a thinzlaunch.sh. - Keep
launch.shhuman-facing. It may accept--xlaunched,--nogui, and port overrides, but it should not contain case loops or result aggregation. - Keep
zlaunch.shthin: parse automation arguments, truncateresults.txt, call sharedxlaunch.sh, validate thatresults.txtcontainsgrade=, then apply project-local scoped cleanup. - Let
xlaunch.sh --max_time=<secs>ownuMayFinishand the timed wait/stop contract. Do not duplicate that lifecycle in mission-local wrappers. - Do not synthesize
grade=or write the final result row fromzlaunch.sh,launch.sh, or target-file parsing.pMissionEvalmust own the verdict and writeresults.txt; wrappers may only truncate, launch, wait, validate presence ofgrade=, and clean up. - For cleanup backstops, copy
assets/moos_scoped_teardown.shinto the target project as<project-root>/scripts/moos_scoped_teardown.shif it does not already exist. Reuse an existing project-root helper unless it is clearly stale or incompatible. - Prefer
pAutoPoketo seed deploy and evaluation variables in moving missions. Unit-style evals may useuTimerScriptor the app under test for readiness when there is no vehicle/deploy lifecycle. Do not put pass/fail logic inpAutoPoke. - Use
pMissionEvalas the primary verdict owner. Prefer mission-level booleans or simple scalar checks over harness-side parsing of raw MOOS traffic. - Prefer event-driven
pMissionEvalleads: evaluate when the mission-owned completion event occurs. UseuMayFinishthroughxlaunch.sh --max_timeas the outer infrastructure ceiling. Use a time-driven evaluation-window lead only when non-completion is an expected mission outcome that should produce mission-ownedgrade=fail. - Multiple
lead_conditionlines in the same aspect are allowed, but they are ANDed: all must be true before pass/fail conditions are evaluated. Alead_conditionafter pass/fail conditions starts the next ordered aspect. A singlelead_conditionmay use textualorwhen each operand is parenthesized, for example(EVENT_A = true) or (EVENT_B = true). Do not use||; it is not a supportedLogicConditionoperator. - Treat
BHV_ERROR_SEEN=falseas a normal safety/integrity pass condition. TreatBHV_WARNINGas advisory development evidence by default: inspect and investigate it with appcasts or.alogtools, but do not add a stickyBHV_WARNING_SEENmailflag, result column, or pass condition unless the scenario is explicitly warning-intolerant and the warning signal is known to be stable rather than transient/retracted. - Keep
results.txtscalar and parseable. The only hard schema requirement isgrade=<pass|fail>; fields such asform=,eval=,timeout=, domain facts, andmhash=are recommended evidence, not a mandatory metric set. mission_modis optional mission-owned provenance. Use it only when one mission folder intentionally supports multiple named standalone modes. Omit it from single-scenario eval missions, and do not use it to represent harness cases.- If a vehicle-local variable is graded shoreside, bridge it explicitly through the vehicle broker and shoreside broker.
- For GUI-capable eval missions, keep normal operator buttons available. Do not force appcast/realmcast viewer modes unless the evaluation scenario needs it.
- Do not add
--case,--jobs, temp mission copies, per-case port blocks, or expected-vs-actual aggregation here. Those belong to the harness builder.
Workflow
- Confirm the base mission launches and generates targets.
- Identify the smallest mission-owned pass/fail signal.
- unit-style app variable
- behavior end flag
- arrival/collision/encounter outcome
- load/process/host info signal
- Add evaluation state to the relevant
.bhvor app config.- When adapting an ordinary waypoint mission, make the graded behavior
finite, such as
repeat = 0, or add an explicit completion flag. A repeating operator survey is usually not a valid eval completion signal.
- When adapting an ordinary waypoint mission, make the graded behavior
finite, such as
- Bridge graded vehicle-local variables to shoreside when needed.
- Add
pAutoPokeor an equivalent explicit initializer for deploy and evaluation variables. - Add
pMissionEvalwith simple lead condition(s), clear pass conditions,result_flag = MISSION_EVALUATED = true, andreport_file = results.txt. - Add or update
zlaunch.shto set a mission-appropriateMAX_TIMEdefault, accept--max_time=<secs>as an override, and forward the final value toxlaunch.sh --max_time=<secs>. - Add or update
README.mdwith scenario, grading signal, and run commands. - Validate target generation, then run the headless cycle and inspect
results.txt.
Reference Use
- Read
references/eval-mission-style.mdfor boundaries and file layout. - Read
references/evaluator-apps.mdbefore wiringpAutoPokeorpMissionEval. - Read
references/scenario-and-grading.mdbefore grading obstacles, contacts, moving/integration outcomes, or structured payloads. - Read
references/zlaunch-xlaunch.mdbefore editing automation wrappers. - Read
references/validation.mdbefore reporting an eval mission as done. - Copy
assets/eval-single-vehicle/when a concrete minimal moving example is useful. - Copy
assets/moos_scoped_teardown.shinto the target project as<project-root>/scripts/moos_scoped_teardown.shwhen the project does not already have an equivalent root-scoped helper. - Run
scripts/static_check_eval_mission.sh <mission-dir>for a quick structural check. - Run
scripts/live_check_eval_mission.sh <mission-dir> --port_base=<free-base>for bundled-example or high-trust validation when MOOS-IvP runtime tools are available. - Treat live-check teardown failure as a test failure, show the teardown error, and preserve the temporary workdir for diagnosis.
Validation Checklist
./launch.sh --just_make --nogui <warp>succeeds.- Generated targets contain
pMissionEval, explicit initialization (pAutoPoke,uTimerScript, or an app-owned producer), and any evaluator apps needed for reported columns such aspMissionHash. - If
pMissionHashis used formhash=evidence, keep it headless-only by default; GUI targets should not launch bothpMissionHashandpMarineViewerunless the overlapping pMarineViewer hash feature is deliberately disabled. - Generated targets include bridged graded variables if the verdict depends on vehicle-local posts.
./zlaunch.sh --just_make <warp>succeeds whenxlaunch.shis onPATH.- Headless
./zlaunch.sh --max_time=<secs> <warp>exits cleanly. results.txtcontains one parseable result line withgrade=.- Runtime warnings are investigated during validation; only stable,
scenario-relevant warning metrics are surfaced in
results.txt. - High-trust checks use
scripts/live_check_eval_mission.shor equivalent to verify result rows, surface warning evidence, and detect leftover listeners on scoped ports. - No mission wrapper uses global
ktm,pkill, or unrelated cleanup. - Eval wrappers use
<project-root>/scripts/moos_scoped_teardown.shas a scoped backstop afterxlaunch.sh; they do not use globalktm,pkill, or broad process discovery. - GUI runs retain normal operator controls unless the user requested a headless-only mission.