Skip to content

Report connectors without ends and make messages abstract - #28

Open
mbrunnen wants to merge 1 commit into
Open-MBEE:mainfrom
mbrunnen:connectors-without-ends
Open

mbrunnen wants to merge 1 commit into
Open-MBEE:mainfrom
mbrunnen:connectors-without-ends

Conversation

@mbrunnen

@mbrunnen mbrunnen commented Nov 7, 2026

Copy link
Copy Markdown

Fixes #27.

validateConnectorRelatedFeatures now reports a concrete connector with no
ends, and validateBindingConnectorIsBinary a binding connector with no
ends, abstract or not
(KerML 1.0, 8.3.4.5.3,
8.3.4.5.2). A message
is lowered with isAbstract: true
(SysML 2.0, 8.2.2.16,
7.16.2). Both
belong together: a message has no ends, so the wider rule alone would flag
every message.

How to test

$ cargo test -p sysmlv2-model --lib connectors_without_ends
$ cargo test -p sysmlv2-parser --test integration -- full_baseline:: opensysml::

Look closely at

  • The corpus findings do not change. Without the isAbstract fix, 8
    messages in the training material, Annex A and the interaction examples
    would be flagged.
  • The full-form baseline moves only in the FlowUsage isAbstract row: 40 of
    the 138 corpus FlowUsages are messages.
  • The opensysml fixture
    negative/semantic/k49-binding-connector-with-three-ends.kerml gains a
    finding on its abstract binding b2;, which the fixture marks as invalid.
  • tests/check.rs used connection x : I; as a typing shorthand. It is
    abstract connection x : I; now, so the test keeps its intent: no finding
    at all.
  • Associations (assoc R;) are left out, as the issue explains.
  • The CHANGELOG.md entry is under a new Unreleased heading. Move or drop
    it as you prefer.

KerML 8.3.4.5.3 requires two related features of a concrete connector and
8.3.4.5.2 exactly two of any binding connector. The rules skipped a
connector with no ends. A message has no ends and is always abstract
(SysML 8.2.2.16, 7.16.2), but was lowered as concrete, so the wider rule
needs the flag: the full form gets it for the 40 messages of the corpus.

The opensysml fixture k49 gains the finding on its abstract binding with
no ends. A typing test wrote an end-less connection as a shorthand; it is
abstract now.
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.

check misses connectors without ends, and a message is exported with isAbstract: false

1 participant