# What happened in Kigali and App Release Overview
## History
There was a bit of a hectic time with the release of the app lately. This was due to an issue discovered, when we tried to bootstrap the Kigali community in Africa.
At the Kigali bootstraping gathering, all the attestations were rejected. Research showed that somehow the negative sign of the lattitude and longitude values disappeared on the way to the blockchain. This is something we thought to have fixed a long time ago [encointer-js/#65](https://github.com/encointer/encointer-js/pull/65). It is still unclear why this occurred.
Instead of hunting down such a low-level bug under time pressure, we decided it is better to simply switch to the ClaimV2, where we send a new extrinsic to the blockchain with a simpler data structure, see the PR [encointer-pallets/#231](https://github.com/encointer/pallets/pull/231). This step was planned for soon anyhow.
## What happened then until the Next Cycle
So we had 10 days of time until the next bootstrapping ceremony, where we thought that it is more than enough. The new extrinsic was incorporated in the app, and the next release was on the way. The apple release was extraordinarily fast and so `v1.8.9` was in the stores, but the usually frictionless google publication was stuck.
Google suddendly complained about a `REQUEST_INSTALL_PACKAGE` permission, which was inside the app since the very first release. This was a legacy permission anyhow, which we didn't need. We fixed it, but google still rejected it. At that moment, we did not know why.
Hence, the next key-signing cycle was due and Kigali did not have access to the fix that was mandatory for them to be able to do the gathering. As it was only the bootstrapping gathering, we could luckily distribute the APK's to the few bootstrappers manually.
So at this moment, all the Kigali bootstrappers had access to `v1.8.9` or `v1.8.10`. The only difference between the two versions was that `v.1.8.10` did no longer have the `REQUEST_INSTALL_PACKAGE` permission in the app.
## Bug discovery at the Cycle
### 1. Wrong vote for the ClaimV2 extrinsic
After the emergency bugfix, we were ready for the next gathering in Kigali. However, not everything went smoothly immediatelly after the meetup we found out that the early claim of rewards was broken. This was not uncovered in testing, as we only tested the regular payout, which worked perfectly fine. Investigation showed that the update introduced a bug on the app side. Instead of sending the actual `vote` on the amount of attendees to the chain, we sent the amount of scanned attendees to the chain, which was the `vote-1`. This discrepancy in the vote was sufficient for the actual gathering to succeed if all attendees agree on the vote, but it does not fullfill the condition for the early-reward. Therefore all the Kigali members received their income at the start of the next registering phase just fine.
### 2. Gatherings with mixed ClaimV1 and ClaimV2 are problematic
The bug in 1. lead to discrepancies in votes if we had different app versions. Rememeber, in Zurich the iOS release was already at `v1.8.10`, but google at `v1.8.8`. Hence, there could be gathering constellations, where the people with `v.1.8.8` used the ClaimV1 with the correct `vote` and ClaimV2 with the wrong `vote-1`. This introduces a meetup split, and might prevent payout for some accounts due to an invalid vote. Luckily, this only happened in two cases, and exactly two attendees were excempt from the rewards. Those two accounts were identified and reimbursed.
## What now
A new version is being released meanwhile `v1.8.11`, which includes the fixes for the ClaimV2 extrinsic. It is very important that all the community members have upgraded to it by the time of the next gathering to ensure a smooth key-signing cycle.
Current state of release of `v1.8.11`:
* Google: Release has now finally been unstuck, and is already released.
* iOS: In review by apple and should be out very soon
* F-Droid: We finally re-enabled the F-Droid releases. F-Droid built successfully, and the release might be in the store at any time.