Skip to content

[import] Metadata on a Dependency cannot resolve an imported library metadata definition by its unqualified name #2540

Description

@atanaka

Summary

When a metadata usage is owned by a Dependency — as a prefix (#Refinement dependency …) or in its body
(dependency … { @Refinement; }) — its type cannot be resolved if it names a metadata definition of the standard
library by its unqualified name, even though the library package is imported. The upload reports
Unable to resolve name 'Refinement', and the imported MetadataUsage has no type. The same name resolves when it is
qualified, and a metadata definition declared in the same package resolves unqualified.

The SysML v2 Pilot Implementation (0.62.0) accepts the file without errors.

Environment

  • SysON v2026.9.0 and v2026.9.2 (Docker images eclipsesyson/syson:v2026.9.0 / v2026.9.2, linux/amd64), blank project
  • Uploaded through the GraphQL uploadDocument mutation

Reproduction

Upload this file into a blank project:

package ReproRefinement {
    private import ModelingMetadata::*;
    metadata def <mm> LocalMeta;
    requirement def Upper;
    requirement def A;
    requirement def B;
    requirement def C;
    requirement def D;
    requirement def E;
    #refinement dependency A to Upper;                    // library, short name
    #Refinement dependency B to Upper;                    // library, declared name
    #mm dependency C to Upper;                            // local metadata definition
    dependency D to Upper { @Refinement; }                // library, body annotation
    #ModelingMetadata::Refinement dependency E to Upper;  // library, qualified name
}

Result, per line (checked with GET /api/rest/projects/{p}/commits/{p}/elements, FeatureTyping.type of each MetadataUsage):

Metadata Annotated element Resolved
#refinement Dependency no
#Refinement Dependency no
@Refinement in the body Dependency no
#mm (local definition) Dependency yes
#ModelingMetadata::Refinement Dependency yes

The upload reports three warnings, one per unresolved line:

[Warning] Unable to resolve name 'refinement' for reference 'type' on element '[FeatureTyping] ReproRefinement::<OwningMembership>::<Dependency>::<Annotation>::<MetadataUsage>::<FeatureTyping>'
[Warning] Unable to resolve name 'Refinement' for reference 'type' on element '[FeatureTyping] ReproRefinement::<OwningMembership>::<Dependency>::<Annotation>::<MetadataUsage>::<FeatureTyping>'
[Warning] Unable to resolve name 'Refinement' for reference 'type' on element '[FeatureTyping] ReproRefinement::<OwningMembership>::<Dependency>::<Annotation>::<MetadataUsage>::<FeatureTyping>'

ModelingMetadata.json bundled in syson-application-configuration-2026.9.0.jar does declare
MetadataDefinition Refinement with declaredShortName = "refinement", so the definition is available.

Impact

airbus/apollo-11-sysml-v2 records all its cross-layer traceability as
#refinement dependency … to …; (369 dependencies). After upload every one of them keeps its client and supplier but
loses the Refinement typing, so a refinement cannot be told apart from any other dependency. The Pilot
Implementation reports 0 errors and 0 warnings for the same 28 files.

Cause

Not located. In the repro, an unqualified name of an imported library definition fails while a local definition and
a qualified library name resolve. In a separate upload, #Refinement requirement def F; did resolve in SysON
(the Pilot Implementation rejects that line, because Refinement may only annotate a Dependency), so the failure
appears to depend on the annotated element being a Dependency; we have not checked other element kinds.

Workaround

Qualify the name: #ModelingMetadata::Refinement dependency A to Upper;.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions