fix #20: expose solver internals as RO properties