Skip to content

Allow multiple final states in Behavior Annex specifications 馃 - #3242

Merged
lwrage merged 2 commits into
masterfrom
3179_allow_multiple_final_states
Sep 17, 2026
Merged

lwrage merged 2 commits into
masterfrom
3179_allow_multiple_final_states

Conversation

@lwrage

@lwrage lwrage commented Sep 17, 2026

Copy link
Copy Markdown
Contributor

Fixes #3179

The legality checker rejected every subprogram behavior specification with more than one final state. Remove that unconditional upper limit to follow AS5506/3 Rev. A D.3, while retaining the requirement for at least one subprogram final state. Declaring an annex on a component implementation does not itself select a deterministic implementation profile.

Issue3179Test validates an external AADL model with two final states in both types and implementations of all 14 component categories, plus a subprogram whose initial state is also final. It asserts category coverage and final-state counts. Before the fix, the regression failed only on the six multiple-final-state diagnostics for the subprogram cases; afterward it passes without diagnostics. The regression commit precedes the production-fix commit.

Update the existing semantic tests, BA Xtext integration test, characterization baselines, and conformance finding G15. Existing checks for missing final states, invalid initial and complete states, and outgoing transitions from final-only states remain covered.

Validation:

  • Full BA suite: 178 tests passed, no failures, errors, or skips.
    mvn -o -T5 -s releng/osate.releng/settings.xml -Plocal -pl :org.osate.ba,:org.osate.xtext.aadl2.ba,:org.osate.ba.tests,:org.osate.ba.feature -Dtycho.localArtifacts=default -Dpr.build=true -Dsign=false -Dspotbugs=false -Dcodecoverage=false -Djavadoc=false -Dxtext.generator.skip=true -DfailIfNoTests=false clean install
  • Clean root reactor: all 143 projects and 1,638 tests passed, no failures, errors, or skips.
    mvn -o -T5 -s releng/osate.releng/settings.xml -Plocal -Dtycho.localArtifacts=ignore -Dpr.build=true -Dsign=false -Dspotbugs=false -Dcodecoverage=false -Djavadoc=false -DfailIfNoTests=false clean install
  • git diff --check passed; worktree clean.

Dependencies: none; based directly on master.

Residual risk is limited to consumers that assumed subprogram behavior has a single final state. This change does not introduce or enforce a deterministic implementation profile.

Validate an external AADL model with two final states in both types and implementations of all 14 component categories, plus a subprogram whose initial state is also final. Assert category coverage and the final-state counts so acceptance cannot pass with missing cases.

The regression fails only on the six multiple-final-state diagnostics for the subprogram specifications, with no unrelated AADL errors.
Remove the unconditional subprogram final-state upper limit to follow AS5506/3 Rev. A D.3. Standard behavior specifications may describe alternative returns, including in component implementations; those do not implicitly select a deterministic implementation profile. Retain the requirement for at least one subprogram final state and all other state-legality checks.

Update the legacy semantic and Xtext integration expectations, add characterization baselines for all 14 component categories, and mark conformance finding G15 implemented.

The regression failed before the fix and now passes for both types and implementations. Validation: 178 BA tests and a clean offline root reactor with -T5 and -Dtycho.localArtifacts=ignore; all 143 projects and 1,638 tests passed with no failures, errors, or skips.

Fixes #3179
@lwrage
lwrage merged commit 2caa32a into master Sep 17, 2026
1 check passed
@lwrage
lwrage deleted the 3179_allow_multiple_final_states branch September 17, 2026 17:57
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.

Allow multiple final states in Behavior Annex subprogram specifications 馃

2 participants