The Mic the Game Never Opens
Written later and filed to this date, as part of filling in every day of the year.
The reviewer at the glasses’ app store sent back Candy Box, an idle game in which candies pile up and you eat them, for two reasons, and the agent that fixed it wrote both into one commit. The body opens: “Two reviewer-blocking issues on the Candy Box submission.” The first: “Mic permission undeclared.”
Candy Box has no microphone feature. Nothing in its code asks for audio. My first reaction, and I suspect most people’s, was that the reviewer had opened the wrong app.
The commit does not take that line. It explains why the reviewer was right in one sentence I keep returning to: the standalone bundle ships the whole shell the game runs inside, and the shell has a voice service that can open the microphone, “so the package is glasses-mic-capable even though the game never records.” The shell is the launcher I built to run several small apps on the glasses at once. Packaging one app on its own means shipping the launcher with it, voice service included. The game never calls it. The bytes are there.
Then the line that decides the matter, quoting the store’s policy back at itself: “declare the capability your bundled code carries.” Not the capability you use. The one you carry. The agent checked before conceding, searched the built bundle, and found the audio-control call twelve times. The fix is one manifest entry whose description says what the game does not do: the permission is declared because the game ships inside a shared shell whose voice service can open the microphone, and the game itself does not record audio.
The second issue is the same mistake seen from the other side. In the launcher, a double press at the root takes you home. In a one-app package there is no home to go to, so the double press stranded the player on an empty launcher with no way out. The shell had assumed it was never alone.
What the author understood is that a permission is a property of the artifact, not of the intent. I think of a thing’s capabilities as the features I built. A reviewer, who cannot see intent and should not have to, counts what is in the box. A game that carries a working microphone path is a game that can listen, whatever its menu says.
What the commit does not say is that the same test applies to everything else the shell carries that the game never calls. The permission list now has one entry. The bundle has the whole shell.