Release 2026.31.0
Release period: 2026-07-29 to 2026-08-05
This release includes the following issues:
- Fixed Internal Error When Deleting a Building Block Definition
- Ownership Check Fix When Updating Platform Types via the meshObject API
- meshBuildingBlockDefinition API Now Reports Who Created a Definition
- Building Block Definition Approvals and Drift Detection in meshObject API
- No Actions Are Offered for Deleted Building Blocks
- Status Icons Now Sit Inline in Building Block Headers
- Fix Building Block Definition Links on the Platform Builder Dashboard
- Consistent Read Permissions and Filters in the meshObject API
- Find Building Block Definitions by UUID in the Admin Area
- Building Blocks Tab Is Now the Default in the Definition Control Plane
- Aborting a Building Block Run Now Works Even if Its Runner Died
- Building Block Detail View Now Shows Its Tenant or Workspace
- Reactivate a Deactivated Landing Zone
- Building Blocks Re-Run Automatically on User Group Membership Changes
- Dedicated Artifact Upload for Building Block Runs
Ticket Details
Fixed Internal Error When Deleting a Building Block Definition
Audience: User
Description
Deleting a building block definition failed with "An internal error occurred" when another definition had once depended on it. You saw this after you removed that dependency from a draft version to satisfy the conflict message that had blocked the deletion before. Removing the dependency made the conflict message disappear, but the deletion then failed with an internal error instead of succeeding.
Ownership Check Fix When Updating Platform Types via the meshObject API
Audience: User
Description
We fixed an authorization gap in the meshPlatformType API. When updating a platform type, we now check that you are allowed to manage the workspace that actually owns it, instead of the workspace named in the request body. Updating a platform type no longer accepts a request that names a different owning workspace than the current one. Because ownership cannot be transferred through this endpoint, such a request now fails with a clear error instead of silently ignoring the change. Deactivating and reactivating a platform type also shows up in the activity log now, so you can see who changed a platform type's state and when.
meshBuildingBlockDefinition API Now Reports Who Created a Definition
Audience: User
Description
The meshBuildingBlockDefinition API now tells you who created a building block definition, not just when
in the status.lifecycle.created.author field. This works the same way status.lifecycle.markedForDeletion already did.
Building Block Definition Approvals and Drift Detection in meshObject API
Audience: User
Description
The meshBuildingBlockDefinition meshObject API now exposes the Run Approvals and Drift Detection & Schedule settings from the Policies tab. You can read and configure which run triggers require operator approval, and whether drift detection or drift reconciliation runs on a schedule, programmatically through the API.
No Actions Are Offered for Deleted Building Blocks
Audience: User
Description
Deleted Building Blocks no longer show an action in the Building Blocks list. Previously a deleted Building Block whose definition had a newer version still offered you an upgrade, even though nothing can be done to it anymore.
Status Icons Now Sit Inline in Building Block Headers
Audience: User
Description
We tidied up the headers of the Building Block and Building Block Run detail pages. The status icon now follows the name directly instead of sitting in its own column, so long names use the full width of the header and wrap naturally. On the run page, the run number and its status always stay together on one line, making it easier to see at a glance which run you are looking at and how it went.
Fix Building Block Definition Links on the Platform Builder Dashboard
Audience: User
Description
On the Platform Builder dashboard, the "View all definitions" link on the Building Block Definitions card now takes you to the Definitions overview instead of the Building Blocks list. The "Add Building Block Definition" button shown when you have no definitions yet now opens the definition creation form directly.
Consistent Read Permissions and Filters in the meshObject API
Audience: User
Description
We unified how the meshObject API decides what your API key may read. Every list endpoint now returns the union of everything your key is entitled to see, and query parameters act purely as filters that narrow that result. A filter never widens what you can see and never decides access on its own, so filtering for something outside your permissions now returns an empty page instead of an error or a silently ignored filter.
How to use
These endpoints behave differently than before:
meshBuildingBlock list: the unfiltered list now includes the Building Blocks created from a definition your workspace owns, even when another workspace consumes them. Previously you had to pass a managed filter to see them at all. The 'managedByWorkspaceIdentifier' and 'managedByDefinitionUuid' parameters still work, but they now only narrow the result within what your key may already see.
meshBuildingBlockRun list: the required 'buildingBlockUuid' parameter is now a pure filter. Passing the uuid of a Building Block you may not read returns an empty page instead of a 403, and an unknown uuid returns an empty page instead of a 404. Runs of an already deleted Building Block stay visible.
meshTenant list (v3 and v4): 'workspaceIdentifier' is now applied as you pass it. Previously we silently replaced it with your own Workspace whenever your key was not a platform admin key, so filtering for another Workspace returned your own Tenants. It now returns an empty page.
meshPaymentMethod list: 'workspaceIdentifier' is now applied as you pass it. Previously we ignored it for Workspace-scoped keys, so filtering for another Workspace returned your own Payment Methods. It now returns an empty page.
meshBuildingBlockRunner, meshLandingZone, meshPaymentMethod and meshPlatform list: a key that holds the list right but has no readable scope at all now receives an empty page instead of a 403.
If a client relied on any of the previous behaviours, pass the filters that describe what you actually want. What each of your keys may read has not changed - only how filters and errors interact with it. Read permissions on meshIntegration, meshBuildingBlockRunner, meshLandingZone, meshPlatform and meshTenantUsageReport are unchanged.
Find Building Block Definitions by UUID in the Admin Area
Audience: User
Description
You can now search the Building Block Definitions overview by UUID, not just by name. Previously the search box only matched names.
Building Blocks Tab Is Now the Default in the Definition Control Plane
Audience: User
Description
When you open a building block definition's control plane, the Building Blocks tab now opens first instead of the General tab. This gets you straight to the definition's provisioned building blocks, which is usually what you're looking for right after opening a definition.
Aborting a Building Block Run Now Works Even if Its Runner Died
Audience: User
Description
When you aborted a building block run that was already executing , meshStack waited for the runner executing it to confirm the abort. If that runner had already terminated in an unexcepted way, the confirmation never arrived and the run could appear stuck forever. We improved this edge case behavior to prevent runs getting stuck like this.
Building Block Detail View Now Shows Its Tenant or Workspace
Audience: User
Description
The Building Block detail view now tells you where a Building Block lives at a glance. Tenant-level Building Blocks show their tenant and workspace-level Building Blocks show their workspace, right next to the definition. As a partner, the tenant or workspace is a link that takes you straight there, so you no longer have to search for it.
Reactivate a Deactivated Landing Zone
Audience: User
Description
You can now reactivate a Landing Zone that was previously deactivated. Until now this was a one-way action. Reactivating makes the Landing Zone available for new Tenants again, so you no longer have to recreate one from scratch after deactivating it by mistake.
In meshPanel, deactivated Landing Zones now offer a "Reactivate Landing Zone" action. Because deactivating is now easily reversible, we also removed the confirmation prompt that used to appear before deactivating a Landing Zone.
Reactivating a Landing Zone requires permission to save Landing Zones, and deactivating one requires permission to delete them.
Building Blocks Re-Run Automatically on User Group Membership Changes
Audience: User
Description
Building Blocks that use a user permissions input now re-run automatically when the membership of a user group changes. Previously we only refreshed these Building Blocks when a role binding was added or removed, so adding or removing a user from a group that is already assigned to a Workspace or Project left the Building Block's user permissions stale until the next unrelated run. Now the affected Building Blocks reconcile right away.
Dedicated Artifact Upload for Building Block Runs
Audience: User
Description
Runners now upload the artifact a Building Block run produced - such as the plan a dry run creates for a Building Block change that needs approval - through a dedicated upload operation on the meshBuildingBlockRun API instead of embedding it in the run status update. Uploading the raw binary keeps large plans out of the status update payload, which makes run updates smaller and artifact handling more robust. Uploading is gated on its own permission, so you can grant a runner the ability to store artifacts without granting it broader run write access.
How to use
We keep accepting artifacts embedded in run status updates for now, so existing runners continue to work and you don't have to change anything. Runners built against the current API should follow the artifact upload link on the run and upload the artifact before reporting the run as successful. If you issue API keys for your own runner, grant it the new artifact upload permission in the Building Block Runs permission group.