Issue #3605939: Timeout node feature: make the relative/absolute deadline explicit and self-explanatory

Make the timeout node-feature editor name the deadline kind up front, instead of leaving it to be inferred from which field happens to be filled.

Issue: https://www.drupal.org/project/orchestra/issues/3605939

What changes

  • A "Deadline" selector (Relative: wait for a duration / Absolute: wait until a date) drives the editor. It is UI-only: not stored, it shows only the active mode's fields (via #states) and the save keeps only that mode's keys, clearing the other's, so a stale duration can never shadow an "until" date (or the reverse). It opens on the kind the stored value represents, defaulting to relative when nothing is set.
  • Both deadline fields are now literal-or-variable. The duration may be a literal (seconds or ISO-8601) or the name of a variable holding one, resolved at park time and re-resolved when a park-anchored window re-arms. The "until" date may be a literal absolute date or a variable holding one. A configured yet unreadable reference yields no deadline (logged), never a guessed fallback.
  • "Measured from" now sits with the duration (both shape the relative window).

No stored shape change and no schema key change: the runtime still keys off "until" (absolute) vs duration (relative), so existing workflows keep working.

Tests

Adds kernel coverage for duration-from-variable (initial park and park re-arm), an unreadable duration variable parking with no deadline, and a literal "until" date. Full TimeoutTest green (22 tests).

Merge request reports

Loading
Loading