Refactor SoftwareInfo metadata and enhance SysML dependency modeling - #100
Conversation
…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>
There was a problem hiding this comment.
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
SoftwareItemMetadatawithSoftwareInfometadata 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.toolto 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
exposestatements (CliSubsystemandCliSubsystem::*). Per.github/standards/sysml2-modeling.md(view examples around lines 132–139), views should use a singleexposeto 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
exposestatements (ConfigurationSubsystemandConfigurationSubsystem::*). Per.github/standards/sysml2-modeling.md(view examples around lines 132–139), views should use a singleexposeto scope content; the second line is redundant.
expose ConfigurationSubsystem;
expose ConfigurationSubsystem::*;
docs/sysml2/views/design-views.sysml:34
- This view uses two
exposestatements (CaptureSubsystemandCaptureSubsystem::*). Per.github/standards/sysml2-modeling.md(view examples around lines 132–139), views should use a singleexposeto scope content; the second line is redundant.
expose CaptureSubsystem;
expose CaptureSubsystem::*;
docs/sysml2/views/design-views.sysml:40
- This view uses two
exposestatements (PublishingSubsystemandPublishingSubsystem::*). Per.github/standards/sysml2-modeling.md(view examples around lines 132–139), views should use a singleexposeto scope content; the second line is redundant.
expose PublishingSubsystem;
expose PublishingSubsystem::*;
docs/sysml2/views/design-views.sysml:46
- This view uses two
exposestatements (SelfTestSubsystemandSelfTestSubsystem::*). Per.github/standards/sysml2-modeling.md(view examples around lines 132–139), views should use a singleexposeto scope content; the second line is redundant.
expose SelfTestSubsystem;
expose SelfTestSubsystem::*;
docs/sysml2/views/design-views.sysml:52
- This view uses two
exposestatements (UtilitiesSubsystemandUtilitiesSubsystem::*). Per.github/standards/sysml2-modeling.md(view examples around lines 132–139), views should use a singleexposeto 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.
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
SoftwareItemMetadataindocs/sysml2/common/software-items.sysmlthat defines theSoftwareInfometadata 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
VersionMarkSystem,CliSubsystem,ConfigurationSubsystem,CaptureSubsystem,VersionInfo,Context,Program,LintIssue,ToolConfig, and OTS dependencies) to replace olddocandcommenttraceability annotations with the newSoftwareInfometadata structure. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]3. Ensuring shared definitions are included in renders
docs/sysml2/**/*.sysmlfor rendering, ensuring that shared definitions underdocs/sysml2/common/are included in all diagrams and builds. [1] [2] [3]4. Tooling and version updates
demaconsulting.sysml2tools.toolversion in.config/dotnet-tools.jsonfrom0.1.0-beta.7to0.1.0-beta.13to support the improved globbing and rendering behavior.These changes improve traceability, maintainability, and consistency across the SysML2 models and build process.