# Alpha 50.6.3 changeset

## Scope

A narrow Mini App fix for the Competitive Mandala completion screen.

## Problem

Competitive Mandalas are completed when one side reaches its 200-cell target. The server correctly returns `state: complete` and `can_destroy: true`, but the client opened the `#celebrate` completion card only when all 400 cells were occupied. The destruction button therefore existed in the DOM but remained inside a hidden completion card.

## Change

- Extract the completion-overlay decision into `apps/miniapp/completion-state.mjs`.
- Show the completion overlay when either:
  - the server reports `state === 'complete'`, or
  - all client cells are occupied (preserving the ordinary Mandala fallback).
- Continue suppressing the overlay once destruction has already started.
- Leave the server-side `can_destroy` authorization and Competitive lifecycle unchanged.
- Refresh the Mini App client version/cache-busters to `0.4.0-alpha.50.6.3`.

## Regression coverage

Added focused unit tests for:

- Competitive completion with one side complete while 200 cells remain free on the opposite side.
- Ordinary incomplete Mandala state.
- Suppression during destruction.
- Fully occupied ordinary Mandala behavior.

## Verification

```text
Automated verification: pending
Deployment: pending
Manual Telegram QA: pending
```
