The spec currently is inconsistent: in one paragraph it says that transient contracts (not outputs) can contain non-portable items. But the spec for the contract instruction requires portable items, and that's how implementation works.
On one hand, it's should be safe to allow non-portable items in transient contracts (since they have to be opened before VM finishes). This may allow some useful flexibility.
On the other hand, having parity between contract and output is simpler and safer.
The spec currently is inconsistent: in one paragraph it says that transient contracts (not outputs) can contain non-portable items. But the spec for the
contract
instruction requires portable items, and that's how implementation works.contract
andoutput
is simpler and safer.