Upgrade SysML2Tools to 0.2.0-beta.2 and enhance impact analysis - #27
Merged
Malcolmnixon merged 6 commits intoJul 30, 2026
Merged
Conversation
… impact SysML2Tools 0.2.0-beta.1 adds connection-aware impact analysis (PR #54). The upgrade itself is source-compatible - the new API is purely additive - but it changes default impact semantics: 0.1.0 walked every incoming edge, and connector edges are in that set, so connectors were traversed unbounded and misattributed. 0.2.0 restricts the default to resolved reference edges and makes connector traversal opt-in and bounded. That would silently narrow Impact results in the Query dialog for user models containing connect/bind, so expose the opt-in rather than just bumping the version: - Add an Impact-only "Include connections (connect/bind)" checkbox, wired through BuildOptions to QueryOptions.IncludeConnections and gated to the Impact verb so no other verb's option payload changes. Toggling recomputes immediately, matching the dialog's no-explicit-Run contract. - Correct the walk-depth label: blank means unlimited, but only one connector hop once connections are included. - Surface the new per-entry traversal metadata (Depth, Relation, ViaQualifiedName) as results-panel columns shown only when a result actually carries them, so non-traversing verbs render exactly as before. Depth is read from the engine property, never parsed out of the human-readable Detail text, per the upstream API contract. DemaConsulting.Rendering stays at 0.1.0; no transitive churn. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
A file added through "Add File..." is represented in the workspace tree as a WorkspaceSourceNode of kind File - a leaf with no WorkspaceFileNode beneath it, since WorkspaceFileNode is only produced for files discovered under a folder source. The DoubleTapped handler matched WorkspaceFileNode alone, so double-clicking a directly-added file fell through as a no-op while the same file opened correctly when reached through an added folder. Resolve both representations. The "which node opens what" decision moves out of the Avalonia code-behind into a pure static WorkspacePanelToolViewModel.ResolveOpenableFilePath, so it is unit testable without a view; the handler now just forwards a resolved path. The .sysml filter is applied once, after mapping, so it gates both openable node kinds uniformly. Folder groupings and folder-kind sources still resolve to null, keeping a double-tap on them a safe no-op. Covered by six regression tests. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
0.2.0-beta.1 bounded connector traversal separately from reference traversal: a blank walk depth meant unlimited for reference edges but exactly one hop for connectors, so the full connector closure was unreachable from the Query dialog at any setting - the user had to guess progressively larger depths to widen the blast radius, and "all of it" was not expressible. 0.2.0-beta.2 (upstream PR #55) unifies the bound: one relationship is one unit of depth regardless of kind, and blank is truly unlimited everywhere. The API surface is unchanged, so this is a version bump plus the removal of the caveat the old semantics forced us to document. The walk-depth label returns to the plain "Walk depth (blank = unlimited)", and the design, requirements, and user-guide text describing the connector-hop exception is retired. Pin the new behavior with an OTS regression test that walks a three-hop connector chain: unbounded reaches the whole chain reporting depths 1, 2, 3, while explicit depths truncate it at exactly that many hops. Verified adversarial - it fails against 0.2.0-beta.1. The dialog's label is only truthful while the dependency behaves this way, so the guard belongs with the other OTS evidence. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Formal review of the WorkspacePanel set found the new open-on-double-click behavior had no requirement: six regression tests existed with nothing in the reqstream YAML referencing them, and the verification document's lead-in claim that its scenarios follow the authoritative reqstream mappings was therefore untrue. Add the missing ResolveOpenableFile requirement covering both openable node kinds and all four non-openable cases, which restores that claim rather than weakening it. Change review of the QueryDialog set raised the same gap from two directions: ApplyResultVisibility toggles results-grid columns by index because DataGridColumn gets no compiled-binding field, yet no test asserted the mapping, and the SurfaceTraversalMetadata requirement's "show a column only when an entry carries that value" clause had no verifying test. Cover both with headless UI tests, since neither is reachable from a view-model-only test. One pins the column header order the code-behind assumes - confirmed adversarial by swapping two columns in the AXAML, which fails it - so a future reorder becomes a test failure instead of a panel that silently toggles the wrong column. The other drives the dialog with rows carrying partial metadata, proving each column tracks its own value rather than switching as a group. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Two OTS review sets referenced filenames that have never existed: the DemaConsulting.SysML2Tools and DemaConsulting.Rendering sets used demaconsulting-sysml2tools.* and demaconsulting-rendering.*, while the real documents are named sysml2-tools.* and rendering.*. Six OTS documents were therefore in no review set at all - including the SysML2Tools design, requirements, and verification artifacts this branch modifies for the 0.2.0-beta.2 upgrade, whose evidence was consequently unreviewable. This was silent: reviewmark --lint exits 0 because a path pattern matching no file is not itself an error, so CI could not detect the gap. Also add the new QueryDialogUiTests.cs to the QueryDialog set, matching the existing convention where WorkspacePanelUiTests.cs sits in the WorkspacePanel set - without it, the tests covering the results grid's column behavior would have landed outside any review set too. Only path corrections; no review set is added, removed, or re-scoped, and the file's documented structure is unchanged. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
SysML2Tools-GenerateViewLayouts required the dependency to "generate layout data" from its "layout strategies", but the workbench never receives either: DiagramRenderer.RenderWorkspace turns a named view usage directly into finished output, and the library exposes no intermediate layout graph or public layout-strategy registry. The requirement therefore contradicted the design document in its own review set and could not be verified as written - its one test asserts render output, not layout data. Restate it as the contract actually relied upon: a named view usage in, finished diagram output out, in a single call. The requirement id is left unchanged so existing traceability anchors still resolve. Found by the first formal review of the OTS-DemaConsultingSysML2Tools set, which only became possible once that set's file paths were corrected; the defect is pre-existing and unrelated to the 0.2.0-beta.2 upgrade. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Malcolmnixon
deleted the
feature/sysml2tools-0.2.0-connection-aware-impact
branch
July 30, 2026 19:00
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request updates documentation and configuration to reflect recent enhancements to the SysML2Workbench's query dialog and workspace panel, as well as dependency and review path updates. The most significant changes document new features like connection-aware impact analysis, improved UI behavior, and clarify the handling of openable files in the workspace panel. There are also updates to requirement and review tracking to match these changes.
Query Dialog Enhancements:
Workspace Panel Improvements:
ResolveOpenableFilePathfunction to consistently handle both file and folder sources, and documenting its pure, testable behavior. [1] [2] [3]Requirements and Review Tracking Updates:
sysml2-tools.yaml..reviewmark.yamlto match renamed or relocated documentation files and added UI test file coverage. [1] [2]Dependency Version Update:
demaconsulting.sysml2tools.tool.NET tool dependency to version0.2.0-beta.2in.config/dotnet-tools.json.