• Documentation
    • About ​ValidMind
    • Get Started
    • Guides
    • Support
    • Releases

    • ValidMind Library
    • Python API
    • Public REST API

    • Training Courses
  • Log In
  1. 25.05 Release notes
  • Installing ​ValidMind
  • Release notes
  • ​ValidMind systems access
  • Troubleshooting and support

  • Deployment
  • 1 — Prepare your environment
  • 2 — Pull the container images
  • 3 — Pull the Helm chart
  • 4 — Configure your Helm chart
  • 5 — Configure LiteLLM
  • 6 — Install or upgrade via Helm chart
  • 7 — Complete the initial setup
  • 8 — Verify your installation

  • Authentication
  • Configuring authentication
  • Configure local authentication
  • Configure OIDC integration
  • Authenticate with Entra
    • Configure frontend environment variables for Entra
    • Entra manifest JWT configuration
    • Configure single sign-on (SSO)
  • Supporting multiple OIDC providers

  • Administering
  • Operating ​ValidMind
  • Migrate to vmconfig.toml (26.02)
  • View ValidMind configuration
  • Configure AI model settings
  • Monitoring your deployment
  • Configuring email services
    • Configure email provider
    • Customize email templates

  • Reference
  • ​ValidMind Admin REST API
  • ValidMind configuration

  • Security advisories
  • VM-SA-2026-01
  • VM-SA-2026-02

On this page

  • Backend
    • Model inventory sort by last updated (#1376)
    • Enhance metadata filtering in Figure model for timestamps (#1393)
    • Improve template swap-merge experience (#1383)
    • Date localization support (#1337)
    • Hotfix: Add more DB connections to prevent pool exhaustion (#1388)
    • Fix: Typo in healthcheck endpoint response (#1377)
    • Fix: Cannot download documents (#1380)
    • Fix: Metadata figure query (#1371)
  • Frontend
    • Enhancements
    • Date localization support (#1312)
    • Model inventory sort by last updated (#1326)
  • Documentation
    • User guide updates for managing model stakeholder types (#686)
    • Added new introductory validation notebooks (#689)
    • User guide updates for attestation (#687)
  • Edit this page
  • Report an issue

25.05 Release notes

cmvm
25.05
release
Published

April 24, 2025

This release brings significant improvements to the platform's documentation management, user experience, and system performance. Key highlights include enhanced date localization support, improved model inventory sorting capabilities, and streamlined attestation workflows. The release also includes important backend optimizations for database connection management and logging efficiency.

Backend

Model inventory sort by last updated (#1376)

This PR introduces functional enhancements to the inventory model API. The changes include:

  1. Adding two new fields, updated_at and documentation_updated_at, to the inventory model schema. This enables tracking of when the models and their associated documentation are updated.

  2. Updating the GET endpoint for inventory models to allow sorting by the documentation_updated_at field. When this sort parameter is used, the query joins the Event table and uses a correlated subquery to determine the most recent update time for model documentation (i.e., events with target_type set to "ModelDocument").

These changes enhance usability by allowing clients to more precisely order models based on documentation updates.

Enhance metadata filtering in Figure model for timestamps (#1393)

This pull request enhances the metadata filtering in the get_latest_figures function by adding special handling for timestamp values. The changes introduce a check to determine if the metadata value is a datetime or date object. If it is, the code casts the JSON string value to a datetime type using SQLAlchemy's func.cast and compares it with the provided value. If not, the value is converted to a string for comparison. This improvement allows for accurate filtering of records based on timestamp metadata, ensuring that date and time values are correctly interpreted and compared within the query.

Improve template swap-merge experience (#1383)

This PR introduces new functionality to allow users to create and swap documentation templates for inventory models. The major changes include:

  1. A new method, create_template_version_from_json, added to the inventory model code. This method accepts a document type and sections data to update the current template version, then saves a new template version via an internal helper method.

  2. Three new HTTP POST endpoints added to the UI routing layer for the following document types:

    • model_documentation
    • validation_report
    • monitoring

    Each endpoint maps to a common helper function (_create_and_swap_template) that performs several key actions:

    • Validates the provided document type against allowed values.
    • Retrieves and verifies the inventory model based on the current user's organization and membership (with an authorization override for model admins).
    • Checks for the presence of required fields (to_template_cuid, to_template_version, and new_template_json) in the JSON payload.
    • Retrieves the target template and its version, performs the swap by calling the swap_template method on the inventory model, and finally, calls create_template_version_from_json to update the template.
    • Appropriately handles errors by logging and raising a BadRequestError with relevant messages.

The functional changes focus on enhancing the templatization process and ensuring that proper validations and error handling are in place for swapping templates based on a provided JSON structure.

Date localization support (#1337)

This pull request introduces enhancements to the user settings by adding a new locale configuration field. Key changes include:

  1. Database Migration:
    • A new Alembic migration is added to update the default value of the ui_settings column in the users table, setting it to {"locale": "en"} for future inserts.
    • The migration updates existing records to include the locale setting if it is missing, ensuring that all users have a default locale value.
    • A downgrade path is provided to revert the default back to an empty JSON object if needed.
  2. Application Code Update:
    • The ui_settings column in the User model is modified to use {"locale": "en"} as its default value.
    • The JSON schema used for validating ui_settings is updated to include a new property locale of type string, ensuring that the field conforms to the expected format.

These changes ensure a consistent handling of locale configurations throughout the system and improve the robustness of user settings management.

Hotfix: Add more DB connections to prevent pool exhaustion (#1388)

This PR introduces configurable settings for the SQLAlchemy connection pool in the Flask backend API. Two new configuration parameters, SQLALCHEMY_POOL_SIZE and SQLALCHEMY_MAX_OVERFLOW, are set via environment variables with default values of 25 and 15 respectively. This allows operators to dynamically adjust the connection pool settings based on deployment needs without modifying the source code.

By leveraging environment variables, the implementation enhances flexibility for managing database connections, particularly under varied load conditions. If the environment variables are not present, the system uses the provided defaults, ensuring continuity in functionality.

Fix: Typo in healthcheck endpoint response (#1377)

This pull request fixes a typo in the health check API endpoint response. The endpoint previously returned a JSON object with a misspelled key ('stauts') and now correctly returns the key as 'status'. This change ensures that consumers of the API receive the expected response format for health checks.

Fix: Cannot download documents (#1380)

This PR updates the UI reporting endpoint related to report generation. The key functional change is in the authorization logic for generating different types of reports. Previously, the endpoint applied a generic authorization check for downloading reports. With these changes:

  • The top-level authorization decorator is now set to the generic action "read" rather than "download_report".

  • Fine-grained authorization is enforced inside the method based on the specific document type. For document types "documentation-report" and "monitoring-report", the endpoint explicitly checks for the "download_doc" permission. For document type "validation-report", it checks for the "download_vr" permission.

  • If the document type provided does not match any of the expected values, the system raises a BadRequestError, ensuring only valid report types are processed.

  • The exception handling is updated to catch and pass-through the BadRequestError separately, while still handling other exceptions appropriately.

Fix: Metadata figure query (#1371)

This pull request enhances the metadata filtering mechanism in the database query for figures. The primary functional change is an update to the condition that constructs filters from metadata keys. When the metadata value is a timestamp (either a datetime or a date object), the code now casts the JSON value (extracted as a string) to a DateTime type using the database's casting functionality. This ensures that comparisons between timestamp values in the metadata and the provided datetime/date objects are performed correctly.

Other changes include a minor version bump in the project configuration file (pyproject.toml), but the focus of this PR is on the improved handling of timestamp metadata.

Frontend

Enhancements

Date localization support (#1312)

Enhance date formatting functionality by adding locale support. Updated date display functions to accept locale as a parameter, ensuring consistent formatting across various components. Adjusted user interface to reflect user-specific locale settings in date displays throughout the application.

This PR introduces significant improvements in how dates are formatted and displayed across various parts of the application. The changes include the creation and adoption of a new reusable component, FormattedDate, and a custom hook, useFormattedDateAndTime. These are used to replace direct calls to old formatting utilities (like displayFormattedDateAndTime) throughout the codebase. Functional updates include:

  • In the main app, current UI localization settings are uploaded to localStorage on user change.
  • New reusable admin components (OrganizationRow, RoleRow, and UserRow) are added for displaying organization, role, and user information respectively. These components simplify the table row implementations within admin pages.
  • The date formatting across admin pages, user views, activity feed, and various modals (such as block metrics, test driven modals, and document blocks) now use the FormattedDate component to support localization.
  • Update of the custom date picker in the custom fields to load locale dynamically and use FormattedDate for value display.
  • Improvements in the template, workflow execution, and profile pages to support localized date displays and user-selected locale options.

These changes provide better code modularity and consistency in date handling, ensuring that date and time values reflect the user's locale preferences throughout the application.

Model inventory sort by last updated (#1326)

Adds new Sort columns to Inventory Model List Updated Date and Documentation Updated Date

This PR introduces two new sorting criteria in the Model Inventory page. Specifically, it adds sorting options for both the "Updated Date" and the "Documentation Updated Date" fields. Each new sorting option allows data to be arranged in two possible orders:

  • Latest first (descending order)
  • Oldest first (ascending order)

These enhancements integrate seamlessly with the existing sorting mechanism by following the same structure and format used for other available sorts. The changes are confined to the addition of sorting options within the UI component located in src/pages/ModelInventory/index.tsx, ensuring that users have more flexibility in how they view and manage model-related data.

When running locally, we have logic that checks if litellm is running by sending a single "hello" to the llm. This is a great way to be able to fall back to the bare openai api if the developer doesn't want to run litellm locally. However the problem is that this invoke to the langchain llm client happens within the task node of the langgraph workflow. Meaning that the "Hello" back from the LLM is streamed to the UI. The solution is simply to remove the callbacks array when running client.invoke(). -->

Documentation

User guide updates for managing model stakeholder types (#686)

This pull request introduces several enhancements to the documentation related to role and stakeholder type management within the platform. The key changes include:

  1. Addition of new documentation for model stakeholder types: A new guide, manage-model-stakeholder-types.qmd, has been added. This document provides detailed instructions on managing model stakeholder types, including adding or editing stakeholder types, managing permissions, and applying stakeholder types to models.

  2. Enhancements to role management documentation: The manage-roles.qmd file has been updated to provide clearer instructions on managing roles, including adding new roles, managing role permissions, and managing users associated with roles. The documentation now includes more detailed steps and clarifications on the uniqueness of role names and stakeholder type names.

  3. Integration of stakeholder types in existing documentation: References to model stakeholder types have been integrated into existing documentation, such as edit-model-inventory-fields.qmd and manage-model-inventory-fields.qmd. These updates ensure that stakeholder types are considered in the context of managing model inventory fields and permissions.

  4. Structural and content updates: Minor structural changes, such as adjusting grid columns in managing-users.qmd, and content updates to improve clarity and consistency across the documentation.

These changes aim to improve the usability and clarity of the documentation related to user roles and stakeholder types, providing users with comprehensive guidance on managing access and permissions within the platform.

Added new introductory validation notebooks (#689)

This pull request introduces several enhancements and bug fixes to the ValidMind documentation and testing framework. The key changes include:

  1. Documentation updates:
    • Updated various documentation files to improve clarity and consistency, particularly in the ValidMind Library and its usage.
    • Added new sections and examples to the documentation, including detailed guides on setting up and using the ValidMind Library for model validation and development.
    • Enhanced the documentation for custom tests and external test providers, providing clearer instructions and examples.
  2. Testing enhancements:
    • Introduced new tests and updated existing ones to cover more scenarios, particularly in the areas of model validation and data quality.
    • Improved the test descriptions and added more detailed explanations for test parameters and expected outcomes.
    • Added new test files and updated existing ones to ensure comprehensive coverage of the ValidMind functionalities.
  3. Code improvements:
    • Refactored code to improve readability and maintainability, including better organization of test files and documentation.
    • Fixed minor bugs and inconsistencies in the codebase, particularly in the test execution and logging mechanisms.

Overall, these changes aim to enhance the usability, clarity, and security of the ValidMind framework, making it easier for users to implement and document their models effectively.

User guide updates for attestation (#687)

Model attestation is now available, see Working with attestations.

Attestation allows model owners and validators to formally review and certify key details about a model at a specific point in time. This helps support internal governance and compliance with external requirements. Progress for the attestation process is tracked through clear status updates and role-specific tasks.

Key functional changes include:

  • Attestation documentation: New guides and glossary entries have been added to explain the attestation process, including setting up attestations, completing questionnaires, and reviewing them. This includes detailed steps for model owners and validators to follow during the attestation process.
  • Glossary update: A new glossary entry for 'Attestation' has been added to provide definitions and context for terms related to the attestation process.
  • Mermaid diagram styling: Updates to the theme styling for Mermaid diagrams, including changes to node and edge colors, and the addition of rounded corners for nodes.
  • Guide organization: The guides have been reorganized to include a new section specifically for attestation, making it easier for users to find relevant information.

These changes aim to enhance the platform's compliance and governance capabilities by providing a structured process for model attestation.

  • ValidMind Logo
    ©
    Copyright 2026 ValidMind Inc.
    All Rights Reserved.
    Cookie preferences
    Legal
  • Get started
    • Development
    • Validation
    • Setup & admin
  • Guides
    • Access
    • Configuration
    • Integrations
    • Workflows
    • Inventory
    • Risk tiering
    • Documents & templates
    • Documentation
    • Validation
    • Reporting & auditing
    • Monitoring
    • Attestation
  • ValidMind Library
    • Quickstarts
    • Development tutorial
    • Validation tutorial
    • Run tests & test suites
    • Use library features
    • Code samples
    • Python API
    • Public REST API
  • Training
    • Learning paths
    • Courses
    • Videos
  • Support
    • Troubleshooting
    • FAQ
    • Get help
  • Edit this page
  • Report an issue
  • Community
    • GitHub
    • LinkedIn
    • Events
    • Blog