LSEP v0.2 — now a buildable ROS 2 reference implementation: typed lsep_msgs + managed lifecycle node, green CI

Small update since the v0.2 announcement: two safety criticisms from the spec discussion thread are now spec changes — the spec is at v2.1-rc1 on main.

  • Photosensitivity cap: no light signal above the WCAG general-flash threshold may exceed 2 flashes/s (WCAG 2.2 SC 2.3.1 / ISO 9241-391 as a conservative adaptation — conformance is not claimed). CRITICAL is now an asymmetric double pulse instead of a 3 Hz strobe; one state (MED_CONF) is still flagged for revision before v2.1 final.
  • Optional platform_risk_class (candidate): CARE/CRITICAL TTC thresholds scale with a platform’s kinetic energy capability (½·m·v_max²) — a heavy industrial platform escalates earlier than a vacuum robot. The 0.5 s THREAT bypass stays fixed for everyone.
  • TTC thresholds consolidated against one canonical table — the spec had internal inconsistencies; fixed as errata.

Credit and details in the thread where the feedback came from: LSEP: Open protocol for standardized robot-to-human state communication (light + sound + motion) - #8 by NemanjaGalic — if you want to tear into the candidate before it becomes v2.1 final, the open issues are at https://github.com/NemanjaGalic/LSEP/issues (#3 is closed with the fix; objections welcome there too).