Skip to content

Enforce Behavior Annex action timeout legality rules 馃 - #3212

Merged
lwrage merged 2 commits into
masterfrom
3184_enforce_action_timeout_rules
Sep 11, 2026
Merged

Enforce Behavior Annex action timeout legality rules 馃#3212
lwrage merged 2 commits into
masterfrom
3184_enforce_action_timeout_rules

Conversation

@lwrage

@lwrage lwrage commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

Fixes #3184

Summary

  • Require every top-level or nested Behavior Annex action timeout to have a simple timeout transition from the same source state.
  • Check every strict transition produced from a declarative multi-source transition, even though those transitions share one action block.
  • Reject action timeouts on transitions with execution-timeout, dispatch-relative-timeout, or completion-relative-timeout conditions.
  • Update the Behavior Annex conformance record and characterization goldens for the new diagnostics.

Cause and correction

The declarative-to-strict translator retained action-block timeouts, but the rules driver only processed each block's action content. No legality check paired an action timeout with a same-source timeout catch or rejected timeout-conditioned transitions.

The new D.3/D.6 legality check walks timeout-bearing action blocks, validates the enclosing transition condition, and searches the strict annex for a same-source simple timeout catch. The driver invokes it before deduplicating checks on action blocks shared by expanded transitions.

Regression coverage

Issue3184Test uses external AADL model projects and asserts exact diagnostic severity, message, and source range for:

  • valid top-level and nested timeouts with same-source catches;
  • missing and wrong-source catches;
  • nested timeouts without a catch;
  • a multi-source transition missing a catch for one expanded source; and
  • execution, dispatch-relative, and completion-relative timeout conditions.

Validation

  • Focused Issue3184Test: 5 tests passed, 0 failures/errors.
  • Complete org.osate.ba.tests suite: 119 tests, 0 failures/errors, 5 tracked skips.
  • Clean offline root reactor with -T5 and -Dtycho.localArtifacts=ignore: 143/143 projects succeeded.
  • git diff --check: clean.

Dependencies and residual risk

No dependent PRs. The branch is based directly on current origin/master. This change adds static legality validation only; it does not change the grammar, metamodel, translation shape, or runtime timeout execution semantics.

@lwrage
lwrage force-pushed the 3184_enforce_action_timeout_rules branch from 6ed9b61 to f01d637 Compare September 11, 2026 16:16
Model valid action timeouts with same-source catches and invalid cases with missing, wrong-source, and timeout-conditioned transitions. Assert exact diagnostics and source ranges, including nested and expanded multi-source action blocks.
Check every timeout-bearing action block for a simple timeout transition from the same source state. Reject action timeouts on execution, dispatch-relative, and completion-relative timeout conditions, including every source created from a multi-source declaration.

Update the Behavior Annex conformance record and corpus goldens for the new diagnostics.
@lwrage
lwrage force-pushed the 3184_enforce_action_timeout_rules branch from f01d637 to 992f390 Compare September 11, 2026 16:22
@lwrage
lwrage merged commit 7a55ff8 into master Sep 11, 2026
2 checks passed
@lwrage
lwrage deleted the 3184_enforce_action_timeout_rules branch September 11, 2026 16:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Enforce Behavior Annex action timeout legality rules 馃

2 participants