Skip to content

Refactor SoftwareInfo metadata and enhance SysML dependency modeling - #100

Merged
Malcolmnixon merged 3 commits into
mainfrom
feature/software-item-metadata
Jul 25, 2026
Merged

Refactor SoftwareInfo metadata and enhance SysML dependency modeling#100
Malcolmnixon merged 3 commits into
mainfrom
feature/software-item-metadata

Conversation

@Malcolmnixon

Copy link
Copy Markdown
Member

This pull request introduces a reusable metadata package for traceability and refactors the SysML2 models to use it for annotating software items with links to their supporting artifacts (source, test, design, verification, requirements). It also updates the build process and documentation to ensure shared definitions are always included in renders. The most important changes are:

1. Introduction of reusable metadata for traceability

  • Added a new shared package SoftwareItemMetadata in docs/sysml2/common/software-items.sysml that defines the SoftwareInfo metadata type for annotating model elements with traceability links to project artifacts. This package is designed for reuse across repositories and is self-contained.

2. Refactoring SysML2 models to use the new metadata

  • Updated all major software item definitions (e.g., VersionMarkSystem, CliSubsystem, ConfigurationSubsystem, CaptureSubsystem, VersionInfo, Context, Program, LintIssue, ToolConfig, and OTS dependencies) to replace old doc and comment traceability annotations with the new SoftwareInfo metadata structure. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]

3. Ensuring shared definitions are included in renders

  • Changed documentation and workflow to use a single recursive glob rooted at docs/sysml2/**/*.sysml for rendering, ensuring that shared definitions under docs/sysml2/common/ are included in all diagrams and builds. [1] [2] [3]

4. Tooling and version updates

  • Updated the demaconsulting.sysml2tools.tool version in .config/dotnet-tools.json from 0.1.0-beta.7 to 0.1.0-beta.13 to support the improved globbing and rendering behavior.

These changes improve traceability, maintainability, and consistency across the SysML2 models and build process.

Malcolm Nixon and others added 3 commits July 25, 2026 13:37
…space hierarchy

- Add docs/sysml2/common/software-items.sysml defining SoftwareItemMetadata::SoftwareInfo,
  a reusable metadata type (description, sourceFiles, testFiles, designFiles,
  verificationFiles, requirementFiles - all [0..1]/[0..*]) replacing the ad-hoc
  comment/doc blocks an unfamiliar-with-SysML authoring agent had added, which were
  rendering as note-box clutter on every diagram.
- Remove all doc/comment annotations from model definitions; fold their text into
  SoftwareInfo's new description attribute instead, so diagrams now show pure
  structural boxes (System/Subsystem/Unit) with zero note-box splatter. Metadata is
  invisible to rendering but remains fully queryable via filter/query/export.
- Restructure the VersionMark model from a flat package VersionMark { ... } reopened
  across every file into genuine nested package VersionMark { package Cli { ... } }
  (etc. for Configuration/Capture/Publishing/SelfTest/Utilities), matching the
  existing folder layout and fixing expose VersionMark::*; semantics (previously
  every leaf definition was a false "direct child" of VersionMark).
- Update SoftwareStructureView to expose VersionMark::**; (whole subtree) since
  subsystem definitions are no longer direct children of VersionMark.
- Bump the pinned demaconsulting.sysml2tools.tool version from 0.1.0-beta.7 to the
  published 0.1.0-beta.8, matching the recursion-scoping fix this rework relies on.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…dencyView diagrams

Replaces the earlier flawed, manually-drawn DependencyView diagrams with genuine
SysML v2 `dependency` relationships declared directly on each unit, rendered
automatically via existing InterconnectionView machinery.

- Bump pinned sysml2tools tool 0.1.0-beta.8 -> 0.1.0-beta.12.
- Flatten the nested `package Cli { ... }`-style wrappers introduced by the
  SoftwareInfo metadata restructuring back to single reopened
  `package VersionMark { ... }` blocks per file, so cross-file `dependency`
  statements can reference collaborator simple names directly.
- Add `dependency X to Y;` relationships to every unit reflecting its real
  collaborators (e.g. Program -> Context/VersionMarkConfig/VersionInfo/
  MarkdownFormatter/GlobMatcher/Validation; GlobMatcher ->
  FileSystemGlobbing), making dependencies first-class, queryable model
  content instead of static diagrams that go stale.
- Add attribute definitions to LintIssue, ToolConfig, and VersionInfo that
  mirror their actual C# class shapes (filePath/line/column/severity/
  description, key/value pairs, jobId/versions_key/versions_value).
- Update design-views.sysml: rename VersionMarkView -> VersionMarkSystemView,
  add `render asInterconnectionDiagram` and `expose *Subsystem::*` to every
  view so the new dependency edges render automatically, switch the shared
  import to OtsDependencies::*.
- Consolidate the CI render glob (build.yaml) and sysml2-modeling.md standard
  from two separate patterns to a single `docs/sysml2/**/*.sysml`, fixing a
  gap where docs/sysml2/common/ metadata definitions were never included.

Verified: build.ps1 green (244 tests x3 TFMs), sysml2tools beta.12 restored,
and `sysml2tools render docs/sysml2/**/*.sysml` produces all 8 views with
zero diagnostics.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Required for 'query describe' to surface metadata annotation attribute values
(fixed upstream in SysML2Tools beta.13). VersionMark's model already uses
'metadata info : SoftwareInfo { ... }' blocks throughout - this was previously
silently invisible to 'query describe' (empty Entries/Summary) because the
tool only read comment-based annotations. Verified:

  sysml2tools query describe --element VersionMark::Program docs/sysml2/**/*.sysml

now correctly surfaces 'Metadata SoftwareInfo.sourceFiles: (...)' etc. lines.

Full build.ps1 (244x3 TFMs) and lint.ps1 both pass clean after the bump.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings July 25, 2026 17:41

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request introduces a reusable SysML2 metadata package (SoftwareInfo) to standardize traceability links from model elements to supporting artifacts, refactors the VersionMark SysML2 model to use that metadata, and updates rendering tooling/workflows so shared definitions under docs/sysml2/common/ are always included in generated design diagrams.

Changes:

  • Added shared SysML2 package SoftwareItemMetadata with SoftwareInfo metadata for artifact traceability.
  • Refactored SysML2 model elements (system/subsystems/units + OTS dependencies) to use metadata info : SoftwareInfo { ... } and added/expanded dependency relationships.
  • Updated CI render glob + tooling docs and bumped demaconsulting.sysml2tools.tool to a newer beta.

Reviewed changes

Copilot reviewed 23 out of 23 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
docs/sysml2/views/design-views.sysml Updated view exposure and render style for generated design diagrams.
docs/sysml2/model/version-mark/utilities/path-helpers.sysml Replaced legacy traceability comments with SoftwareInfo metadata.
docs/sysml2/model/version-mark/utilities/glob-matcher.sysml Added SoftwareInfo metadata and explicit OTS dependency modeling.
docs/sysml2/model/version-mark/utilities.sysml Added SoftwareInfo metadata for the Utilities subsystem.
docs/sysml2/model/version-mark/self-test/validation.sysml Added SoftwareInfo metadata and explicit dependencies for validation flow.
docs/sysml2/model/version-mark/self-test.sysml Added SoftwareInfo metadata for the SelfTest subsystem.
docs/sysml2/model/version-mark/publishing/markdown-formatter.sysml Added SoftwareInfo metadata and dependency to VersionInfo.
docs/sysml2/model/version-mark/publishing.sysml Added SoftwareInfo metadata for the Publishing subsystem.
docs/sysml2/model/version-mark/configuration/version-mark-config.sysml Added SoftwareInfo metadata, modeled tools multiplicity, and added dependencies.
docs/sysml2/model/version-mark/configuration/tool-config.sysml Added SoftwareInfo metadata and modeled OS-keyed maps as parallel lists.
docs/sysml2/model/version-mark/configuration/lint-issue.sysml Added SoftwareInfo metadata plus modeled LintSeverity and lint issue fields.
docs/sysml2/model/version-mark/configuration.sysml Added SoftwareInfo metadata for the Configuration subsystem.
docs/sysml2/model/version-mark/cli/program.sysml Added SoftwareInfo metadata and dependencies for mode dispatching.
docs/sysml2/model/version-mark/cli/context.sysml Added SoftwareInfo metadata for CLI context.
docs/sysml2/model/version-mark/cli.sysml Added SoftwareInfo metadata for the CLI subsystem.
docs/sysml2/model/version-mark/capture/version-info.sysml Added SoftwareInfo metadata and modeled dictionary as parallel lists.
docs/sysml2/model/version-mark/capture.sysml Added SoftwareInfo metadata for the Capture subsystem.
docs/sysml2/model/version-mark.sysml Added SoftwareInfo metadata for the system root and imported shared metadata.
docs/sysml2/model/ots.sysml Added SoftwareInfo metadata for OTS dependency items.
docs/sysml2/common/software-items.sysml Introduced the reusable SoftwareItemMetadata package and SoftwareInfo definition.
.github/workflows/build.yaml Switched render inputs to a single recursive glob over docs/sysml2/**/*.sysml.
.github/standards/sysml2-modeling.md Updated documentation to match the new render glob guidance.
.config/dotnet-tools.json Bumped demaconsulting.sysml2tools.tool version to 0.1.0-beta.13.
Comments suppressed due to low confidence (6)

docs/sysml2/views/design-views.sysml:22

  • This view uses two expose statements (CliSubsystem and CliSubsystem::*). Per .github/standards/sysml2-modeling.md (view examples around lines 132–139), views should use a single expose to scope content; the second line is redundant and risks invalid name resolution (since ::* is a namespace expansion, not a containment expansion).
        expose CliSubsystem;
        expose CliSubsystem::*;

docs/sysml2/views/design-views.sysml:28

  • This view uses two expose statements (ConfigurationSubsystem and ConfigurationSubsystem::*). Per .github/standards/sysml2-modeling.md (view examples around lines 132–139), views should use a single expose to scope content; the second line is redundant.
        expose ConfigurationSubsystem;
        expose ConfigurationSubsystem::*;

docs/sysml2/views/design-views.sysml:34

  • This view uses two expose statements (CaptureSubsystem and CaptureSubsystem::*). Per .github/standards/sysml2-modeling.md (view examples around lines 132–139), views should use a single expose to scope content; the second line is redundant.
        expose CaptureSubsystem;
        expose CaptureSubsystem::*;

docs/sysml2/views/design-views.sysml:40

  • This view uses two expose statements (PublishingSubsystem and PublishingSubsystem::*). Per .github/standards/sysml2-modeling.md (view examples around lines 132–139), views should use a single expose to scope content; the second line is redundant.
        expose PublishingSubsystem;
        expose PublishingSubsystem::*;

docs/sysml2/views/design-views.sysml:46

  • This view uses two expose statements (SelfTestSubsystem and SelfTestSubsystem::*). Per .github/standards/sysml2-modeling.md (view examples around lines 132–139), views should use a single expose to scope content; the second line is redundant.
        expose SelfTestSubsystem;
        expose SelfTestSubsystem::*;

docs/sysml2/views/design-views.sysml:52

  • This view uses two expose statements (UtilitiesSubsystem and UtilitiesSubsystem::*). Per .github/standards/sysml2-modeling.md (view examples around lines 132–139), views should use a single expose to scope content; the second line is redundant.
        expose UtilitiesSubsystem;
        expose UtilitiesSubsystem::*;

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread docs/sysml2/views/design-views.sysml
Comment thread docs/sysml2/views/design-views.sysml
Comment thread docs/sysml2/model/version-mark/configuration/lint-issue.sysml
@Malcolmnixon
Malcolmnixon merged commit adbb890 into main Jul 25, 2026
16 checks passed
@Malcolmnixon
Malcolmnixon deleted the feature/software-item-metadata branch July 25, 2026 17:53
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.

2 participants