Description
compute_study_info reads cls._info.query and, when it differs from the default, re-instantiates the Study with the custom query before counting events. All good here.
But format_study_info then excludes the query field by name when it serializes the block back to source (if f != "query" and f in actual). Since StudyInfo.query is a pydantic field defaulting to "timeline_index < 1", it silently resets the query to the single-timeline default while keeping the counts that were computed from the custom query.
Description
compute_study_info reads
cls._info.queryand, when it differs from the default, re-instantiates the Study with the custom query before counting events. All good here.But format_study_info then excludes the
queryfield by name when it serializes the block back to source (if f != "query" and f in actual). SinceStudyInfo.queryis a pydantic field defaulting to"timeline_index < 1", it silently resets the query to the single-timeline default while keeping the counts that were computed from the custom query.