Right now the store defines attached implementations as "any implementation that we've loaded with the function" and unattached implementations as "any implementation we get back from an API call that ISNT in the root state".
This creates an edge case where the particular zid might be loaded in rootstate as something else, and so we assume it is attached, when it is actually unattached. For example (from Edmund): I made the label for one of the function arguments "Z10007", where Z10007 is the id of one of the function's impls. The impl then appears as 'available' in the impl list, despite not being approved.
To fix this, we should be able to filter the list of Zids we receive from the API by the attached list, instead of the root state (which could have matching values that should be unrelated)