# DigiDala — Alpha 50.6.6 Changeset

## Candidate identity

```text
Base: v0.4.0-alpha.50.6.5
Candidate: 0.4.0-alpha.50.6.6
Commit: d07f2ce
Tag: v0.4.0-alpha.50.6.6
Active release: /opt/pixdala/releases/v0.4.0-alpha.50.6.6
Status: deployed and manually verified
Date: 2026-09-23
```

## Problem

After an active Special or Competitive Mandala had been opened directly, entering the same space through the Mini App left/right arrows could show the empty-space message. Refreshing the Mini App made the existing active space appear normally. The behavior reproduced for both Special and Competitive spaces.

## Root cause

Special-space arrow navigation did not stop the previous Mandala synchronization before starting the new bootstrap. In-flight requests from the previous route could continue during the transition and update shared Mini App state after the route changed. Bootstrap also treated any error as an empty-space condition.

## Changes

- Add a navigation-generation guard to invalidate stale in-flight requests.
- Reset the previous Mandala/campaign state and stop synchronization before entering Special or Competitive spaces via arrows.
- Restart synchronization after a successful Special/Competitive bootstrap.
- Treat a missing `active_campaign` as the empty state, but render a dedicated load-error state for request/bootstrap failures.
- Preserve backend APIs and campaign data model unchanged.
- Add regression contract coverage for stale-request invalidation, synchronization restart and error-state separation.
- Refresh Mini App/package version and cache-busters to `0.4.0-alpha.50.6.6`.

## Verification

```text
Structure: OK
JavaScript syntax: OK
Unit: 16/16
Integration: 46/46
API: 17/17
Total tests: 79/79
```

Deployment: successful exact-tag deploy to the VPS.

Manual Telegram QA: passed. Active Special and Competitive spaces now open correctly through Mini App left/right navigation without requiring a page refresh; the previous false empty-state behavior was not reproduced. The remaining Competitive lifecycle test is still open.
