Examined: requirements-sysmledgraph.sysml, deploy-sysmledgraph.sysml, behaviour-sysmledgraph.sysml, project-sysmledgraph.sysml. Design: GITNEXUS_FEATURES.md.
| Req | Requirement | Deployment satisfy | Part-level satisfy |
|---|---|---|---|
| R1 | ReqPathOnlyInput | ✓ | Indexer |
| R2 | ReqSysMLGrouping | ✓ | GraphStore |
| R3 | ReqSameStorageAsGitNexus | ✓ | GraphStore |
| R4 | ReqListAndClean | ✓ | Cli |
| R5 | ReqMCPTools | ✓ | McpServer |
| R6 | ReqOneGraph | ✓ | GraphStore |
| R7 | ReqLoadOrder | ✓ | Indexer |
| R8 | ReqErrorReporting | ✓ | Indexer, Cli, McpServer (and all actions that report errors) |
Verdict: All R1–R8 satisfied at deployment; R1–R7 at part level; R8 at part level (Indexer, Cli, McpServer) and at action level (all eight actions). No gaps.
| Action | satisfy in model |
|---|---|
| IndexDbGraph | ReqPathOnlyInput, ReqOneGraph, ReqLoadOrder |
| Query, Context, Impact, Rename, Cypher | ReqMCPTools |
| ListIndexed, CleanIndex | ReqListAndClean |
Verdict: Action–requirement traceability is explicit in the model. Consistent.
Port definitions (4): PathPort, GraphWritePort, GraphReadPort, RegistryPort. All have doc.
Connection definitions (5): PathToIndexerLink (pathSource, pathSink), IndexerToGraphWriteLink (writer, graphWrite), McpServerToGraphReadLink (reader, graphRead), CliToRegistryLink (client, registry), McpServerToRegistryLink (client, registry). Each end is typed by a port def. All have doc.
Part ports:
| Part | Ports | Used in connection usages |
|---|---|---|
| Indexer | pathIn (PathPort), graphWriteOut (GraphWritePort) | pathIn: pathFromCli.pathSink, pathFromMcp.pathSink; graphWriteOut: indexerToGraph.writer |
| GraphStore | graphWriteIn, graphReadIn, registry | graphWriteIn: indexerToGraph.graphWrite; graphReadIn: mcpToGraphRead.graphRead; registry: cliToRegistry.registry, mcpToRegistry.registry |
| McpServer | pathOut, graphReadOut, registryOut | pathOut: pathFromMcp.pathSource; graphReadOut: mcpToGraphRead.reader; registryOut: mcpToRegistry.client |
| Cli | pathOut, registryOut | pathOut: pathFromCli.pathSource; registryOut: cliToRegistry.client |
Connection usages (6): pathFromCli, pathFromMcp, indexerToGraph, mcpToGraphRead, cliToRegistry, mcpToRegistry. Each end is bound via ::> to a part.port. Port types match connection-def end types.
Note: indexer.pathIn is the sink for two connections (pathFromCli and pathFromMcp); both Cli and McpServer can trigger index. graphStore.registry is the registry end for two connections (cliToRegistry, mcpToRegistry). Intentional.
Verdict: Port and connection definitions are consistent. All part ports participate in connection usages. No dangling ports; no connection end left unbound. BDD/IBD generate successfully.
SysmledgraphIndexStates: idle → indexing (StartIndex) → ready (IndexComplete); ready → indexing (StartIndex) or cleaning (StartClean); cleaning → idle (CleanComplete). Entry state: idle.
Events: StartIndex, IndexComplete, StartClean, CleanComplete. All used in transitions.
Consistency with structure: Idle aligns with “no index” (list empty). Indexing aligns with Indexer performing IndexDbGraph (path in via PathPort, write via GraphWritePort). Ready aligns with GraphStore having content (read via GraphReadPort, registry via RegistryPort). Cleaning aligns with CleanIndex (registry). No conflict.
Verdict: State machine is complete and consistent with ports and actions.
| File | Package | Imports | Contents |
|---|---|---|---|
| requirements-sysmledgraph.sysml | SysmledgraphRequirements | ScalarValues | R1–R8 |
| deploy-sysmledgraph.sysml | Sysmledgraph | ScalarValues, SysmledgraphRequirements | Actions (8), port defs (4), connection defs (5), part defs (4), SysmledgraphDeployment |
| behaviour-sysmledgraph.sysml | SysmledgraphBehaviour | Sysmledgraph, SysmledgraphRequirements | Events (4), SysmledgraphIndexStates |
| project-sysmledgraph.sysml | ProjectSysmledgraph | SysmledgraphRequirements, Sysmledgraph, SysmledgraphBehaviour | Grouping only |
config.yaml model_files order: Base, ScalarValues, requirements, deploy, behaviour, project. Correct (requirements and deploy before behaviour; project last).
Verdict: Load order and package dependencies are correct.
| Check | Status |
|---|---|
| R1–R8 satisfied at deployment; R1–R7 at part level; R8 at part level (Indexer, Cli, McpServer) and all actions | ✓ |
| Actions have explicit satisfy to requirements | ✓ |
| Port defs and connection defs consistent; all ends typed by port def | ✓ |
| Part ports match connection usage bindings; no dangling ports | ✓ |
| State machine complete; consistent with flow and actions | ✓ |
| Package layout and config load order correct | ✓ |
| visualize.py bdd + ibd succeed | ✓ |
Conclusion: Model is consistent and complete. Requirements, structure (parts, ports, connection items), and behaviour (actions, state machine) align. No changes required for consistency.