In CrossSiteIframeTemplate.js this is handled by assigning __MODULE_FUNC__.__softPermutationId to 0 to begin with, and then only change that value if : was present in the permutation string. I'm not seeing any other js files that init __softPermutationId to 0, and only permutations.js assigns it to another value (but does so conditionally, so it never *assigns* undefined to __softPermutationId, it just leaves it not defined).
var idx = strongName.indexOf(':');
if (idx != -1) {
softPermutationId = parseInt(strongName.substring(idx + 1), 10);
strongName = strongName.substring(0, idx);
}
In researching
https://code.google.com/p/google-web-toolkit/issues/detail?id=8539 recently, this seemed to make sense (except in the context of the bug, where the permutationId in CollapsedPropertyHolder where it gets overwritten when it loads in a split point...). Looking at permutations.js, it defines a method getCompiledCodeFilename(), but from a grep of the codebase, this is only ever called from CrossSiteIframeTemplate.js, which as mentioned above, sets a default value of zero.
The key direct_install maps to com.google.gwt.core.linker.DirectInstallLinker, which extends CrossSiteIframeLinker, and overrides getJsInstallScript to use com/.../installScriptDirect.js instead of com/.../installScriptEarlyDownload.js and change another boolean, but neither of those appear to block getSelectionScriptTemplate from being used to determine the actual selection script. Which should then mean that softPermutationId gets init'd to zero.
That's just at a quick glance - aside from that I only have an absence of evidence of the bug but no evidence of absence. We use a lot of soft permutations, and 8539 is the only time we've seen an issue (where the first time the value gets used is in a split point) - any chance that is what is biting you instead?