contract template disappears on exec
Normally contracts are used by activating a contract template before forking. When the new process is created via fork it will get a new contract initialized from the template. If there is no active template the new process remains in the same contract as its parent.
The problem is that we want several processes in the same contract, but we cannot have any of their children in the same contract (since if any of those children exit, the suicide pact will kill everyone).
However, we do not control any of the source of the application or the logger so we cannot activate a contract template immediately before forking. Instead, we need to activate a new template immediately before we exec the application or the logger.
Unfortunately, the active template is cleared when you exec (although this is completely undocumented).