Pull state reporting changes into 1606_ox branch

Thanks for the tip! I only recently realized it's possible to apply read/write-only constraints to a two-way channel by returning it as a unique type. Just pushed this change.