ImmutableData address is calculated based on its content, so even that the network would enforce nobody mutate its content, I assume you can actually verify it yourself, although I'm not aware of the details of the hash function used, we can ask some of the other devs to explain in detail if needed.
getCotnainersNames functions returns the list of only containers names the app is currently authorised to access to.
A container is essentially a MutableData, but as you can see the SAFE network provides a pre-defined set of containers (created upon account creation) which every app can request access to independently.
In addition to this, an app can request to have its own container created when requesting to be authorised (look at the
options param of the
authorise function here), which is called the App's Container.
Now, as you must know any app can create any MutableData it wants, and then the NFS emulation can then be used on top of it, which enforces some convention in the way the data entries are stored in it, but the app can also decide to handle data entries manipulation by its own to enforce any other convention needed for the app's data.