Skip to content

feat: add virtual System module for complete module listing#110

Merged
ako merged 1 commit intomendixlabs:mainfrom
engalar:feat/system-module
Apr 7, 2026
Merged

feat: add virtual System module for complete module listing#110
ako merged 1 commit intomendixlabs:mainfrom
engalar:feat/system-module

Conversation

@engalar
Copy link
Copy Markdown
Contributor

@engalar engalar commented Apr 7, 2026

Summary

  • Add virtual System module builder with all System entities (User, Session, FileDocument, Image, etc.) and associations
  • ListModules() and ListDomainModels() now include the System module for catalog queries and reference resolution
  • Add GenerateDeterministicID() utility for stable System entity IDs

Split from #107 per code review — this is an independent feature unrelated to ALTER WORKFLOW.

Test plan

  • go build ./... passes
  • go test ./... passes
  • SHOW ENTITIES includes System entities (User, Session, FileDocument, etc.)

🤖 Generated with Claude Code

Add a virtual System module builder that provides System entities
(User, Session, FileDocument, Image, etc.) and associations when
listing modules and domain models. This enables catalog queries and
reference resolution against System types without requiring them
to exist in the MPR file.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 7, 2026

AI Code Review

Review Summary

Critical Issues

None found.

Moderate Issues

  • Missing test coverage: The PR's test plan shows all checkboxes unchecked (go build, go test, and SHOW ENTITIES verification). No test files appear to be added for this significant 454-line feature. This violates the test coverage checklist requirement for new functionality.

Minor Issues

  • Inconsistent ID generation: The System module and domain model use hardcoded UUIDs (00000000-0000-0000-0000-000000000001 and 00000000-0000-0000-0000-000000000002), while entities/associations use GenerateDeterministicID(). For consistency, these should also be generated deterministically (e.g., GenerateDeterministicID("System.Module")).

What Looks Good

  • Clean, focused implementation addressing a single concern (virtual System module)
  • Well-structured code with appropriate helper types (systemAttrDef, systemAssocDef, systemEntityDef)
  • Comprehensive System module definition extracted from Mendix Studio Pro 11.6.4
  • Proper handling of generalizations, attributes, associations, and types
  • Clear comments explaining purpose and implementation
  • Follows existing code patterns in the repository

Recommendation

Request changes primarily due to missing test coverage. Before approval:

  1. Verify go build ./... and go test ./... pass (check test plan boxes)
  2. Add appropriate tests for the new System module functionality
  3. Consider making System/domain model IDs generated deterministically for consistency (lower priority)

The UUID conflict risk is theoretical and low impact (virtual module only appended to listings), but deterministic generation would be more consistent. The implementation quality is otherwise strong.


Automated review via OpenRouter (Nemotron Super 120B) — workflow source

Copy link
Copy Markdown
Collaborator

@ako ako left a comment

Choose a reason for hiding this comment

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

Clean split from #107. Implementation is sound:

  • Deterministic IDs via SHA-256 ensure stable System entity IDs across sessions
  • Entity/association definitions extracted from Studio Pro 11.6.4
  • Generalization hierarchy correctly handled (Image → FileDocument, etc.)
  • ListModules() and ListDomainModels() integration is minimal and clean

Minor: No unit test for BuildSystemDomainModel() — a simple test verifying entity count and a few key entities would be nice but not blocking.

LGTM.

@ako ako merged commit 2b2e0b8 into mendixlabs:main Apr 7, 2026
2 checks passed
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