> For the complete documentation index, see [llms.txt](https://docs.guardianservice.app/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.guardianservice.app/whats-new/release-notes/mgs-v1.5.0.md).

# MGS v1.5.0

### New Features & Enhancements

#### Tenant Account Archive

Tenant Owners previously had no way to close down an account. The only way an account became inactive was automatically, through subscription limits, with no owner-initiated path and no record of who asked for what. This release adds a proper archive flow with a review step.

* **Owners can request archival.** A Tenant Owner can request that their account be archived from their profile, give a reason, and see that the request is pending.
* **Super Admins review every request.** All archive requests appear in one place, showing who requested archival and when, and a Super Admin can approve or reject each one. Approving archives the tenant.
* **Archived accounts stay visible and reversible.** Archived tenants are listed under a dedicated Archived tab and can be un-archived, which restores the tenant to its previous state.
* **The owner is notified.** The Tenant Owner receives an email confirming the account was archived.

#### Much Faster Dry Run for Large Policies

Switching a large policy to Dry Run could take more than ten minutes and often failed outright with "The request timed out," leaving the policy stuck in Draft. On a methodology with around 900 schemas, almost all of that time was spent on per-schema round trips that produce no real result in Dry Run, since Dry Run does not publish anything to Hedera or IPFS.

* **Dry Run switching is now near-instant by comparison.** Those round trips are handled directly, and the associated records are written in a single batch, taking the switch from many minutes down to seconds for the same policies.
* **No more timeouts on large methodologies.** Large policies such as VM0033 now enter Dry Run cleanly instead of returning a gateway timeout and leaving the policy in an inconsistent state.

#### Large Policies Open Reliably in the Policy Viewer

Opening a large methodology in the policy viewer could hang on an endless spinner. Two things caused it: the platform loaded every schema on the policy's topic into memory even though the visible steps used only a handful, and block responses returned very large, highly redundant payloads that no part of the product actually consumed.

* **Schemas load only when needed.** The policy viewer now loads the schemas a step actually references instead of the entire topic, which removes the main cause of the spinner on large methodologies.
* **Lighter responses across the platform.** Trimming the redundant payload also stops one heavy policy from slowing down unrelated parts of the application, which previously left ordinary pages loading for minutes while a large policy was open.
* **Faster schema lists.** Schema list pages no longer do the same conversion work twice per request, which speeds up every schema-heavy screen.

#### External Service Credentials

The Credentials area under Profile could not be used: its requests either returned a not-found error or hung indefinitely, so the tab spun forever. Both causes are fixed and the feature now works end to end, including global and per-policy credentials for both users and Standard Registries.

#### Mainnet Onboarding for Remote Users

On mainnet, the profile setup wizard required every user to complete vault setup, which permanently blocked remote users of external and remote policies. Those users bring their own existing identifier and Hedera account and have no key to store, so they could never finish onboarding and their requests never reached the policy owner. Remote users can now skip vault setup on mainnet, while the vault requirement stays in place for local users, whose operator key must be stored.

#### Clearer "Update Available" Prompt

The dialog that appears when a new version of the application is available did not explain what "Not now" actually does, so it read as skipping the release. The wording now makes it clear that choosing to keep working is safe and that the update is applied the next time the page is reloaded.

### Platform Stability

#### Policy Steps No Longer Stall Without Explanation

Two separate issues could leave a workflow step stuck with no error anywhere, showing only "This step isn't available to you right now."

* **Custom logic errors are now reported.** When a policy's custom logic failed at runtime, the error was silently discarded and the step simply parked. Failures are now surfaced instead of swallowed, so the cause is visible rather than invisible.
* **Remote submissions reach the Standard Registry.** For external and remote policies, a relayed submission that reached a signing step could stall permanently because the relayed document arrived without owner information. The Standard Registry never saw the resulting document. This is resolved.

#### File Storage Reliability

* **Files are no longer lost silently.** An internal file write could fail after the platform had already recorded a reference to it, so the reference survived but the content never did, producing a "file not found" error later with no way to recover the content. Write failures are now detected and reported instead of being dropped.
* **A missing file no longer blocks Dry Run.** Switching to Dry Run failed with a generic "Unknown Error" when a policy referenced a file that was never written, typically after a partially failed tool import. The switch now handles the missing reference instead of failing outright.

#### Resilience Under Heavy Load

Several issues that surfaced during production incidents are addressed.

* **Large file publishing no longer stalls the queue.** A single oversized file sent to IPFS could exhaust the workers processing it, which backed up all queued file and Hedera operations across multiple tenants and left publishing actions hanging.
* **Topic listeners recover instead of wedging.** A listener whose handler never completed would re-receive the same message indefinitely and stop making progress. Listeners now recover rather than staying stuck.
* **Backoff when Hedera's mirror node is rate limited.** The service that follows Hedera topics retried at full rate through a rate-limiting event, producing a long window where nothing was ingested. It now backs off and recovers.
* **Faster, more complete policy loading after a deployment.** Policies now load in parallel across available capacity rather than through a fixed number of channels, the platform periodically reconciles so a policy created during a deployment is picked up promptly, and policies are recovered if the process hosting them fails.

#### Interface Fixes

* **Discontinue policy dialog.** The dialog opened at nearly the full width of the window, and choosing a deferred discontinue without picking a date silently discontinued the policy immediately. Discontinuing a published policy cannot be undone, so this was a meaningful risk. The dialog is now correctly sized and requires a date when the discontinue is deferred.
* **Add Credential dialog.** Dropdown options were cut off by the edge of the dialog, so any option other than the first was effectively unselectable, and the form could be saved with no service selected. Both are fixed.
* **Accurate counts on list pages.** The "Published" and "In edit mode" tiles counted only the rows on the current page and changed as you paged through, on Tools, Policies, Modules and several other list pages. They now reflect the full set.
* **Tool editor no longer hangs after saving.** Renaming a tool and saving could leave the page on a spinner indefinitely, even though the change had been saved. The underlying cause, a set of cached requests that never returned when served from cache, is fixed, along with related stuck-loader cases in the policy editor.

#### Clearer Errors

* **Remote imports explain what went wrong.** Importing a remote policy or tool whose referenced data was unreachable produced a generic failure or nothing at all. The reason is now reported to the user.
* **Role management guides incomplete profiles.** A Standard Registry that had not finished profile setup could open the role wizard, complete it, and only fail on save with an unclear error, which read as roles being disabled for the tenant. The dependency on completing profile setup is now made clear up front.
* **No more repeated background errors from a broken link.** A single unresolvable file link in a Dry Run document caused the browser to retry it continuously, generating a large volume of failed requests and log noise for as long as the page stayed open.

#### Account Provisioning and Treasury

* **New tenants can onboard their full team.** The balance allocated to each automatically created user account consumed half of a new tenant's treasury, so a tenant could not provision its Standard Registry plus an additional user in one go, and registration failed with an insufficient balance error. The allocation and refill behavior are corrected.
* **Treasury top-ups are protected against repeats.** Rapid or repeated refill requests could each transfer funds, so a handful of clicks moved several times the intended amount. Refills are now guarded against duplicate requests.

#### Broad Service Hardening

This release also includes internal robustness and build reliability work across the platform's shared services, with no change to how the product is used.

***

For the full changelog and release notes on the open-source Guardian please visit: <https://github.com/hashgraph/guardian/releases>
