Why
Consumer sync PR stranske/Pension-Data#899 (also stranske/Manager-Mosaic#23) carries an unresolved CodeRabbit thread on tools/discover_model_catalog.py. bool is a subclass of int, so a malformed catalog value such as created_at: true passes isinstance(value, (int, float)) in _parse_timestamp, becomes a 1970 timestamp, and catalog_diff can hide a genuinely new model as historical.
Scope
Fix timestamp parsing in tools/discover_model_catalog.py at the Workflows upstream source so the next maint-68 sync regeneration outdates the consumer review thread.
Non-Goals
- Changing consumer PRs directly; the fix lands in Workflows main and propagates via sync.
- Altering catalog selection policy beyond rejecting non-numeric boolean timestamps.
Tasks
Acceptance Criteria
Implementation Notes
Review thread: stranske/Pension-Data#899 on tools/discover_model_catalog.py. Upstream source verified at tools/discover_model_catalog.py:48-58 in this repository.
Why
Consumer sync PR stranske/Pension-Data#899 (also stranske/Manager-Mosaic#23) carries an unresolved CodeRabbit thread on
tools/discover_model_catalog.py.boolis a subclass ofint, so a malformed catalog value such ascreated_at: truepassesisinstance(value, (int, float))in_parse_timestamp, becomes a 1970 timestamp, andcatalog_diffcan hide a genuinely new model as historical.Scope
Fix timestamp parsing in
tools/discover_model_catalog.pyat the Workflows upstream source so the next maint-68 sync regeneration outdates the consumer review thread.Non-Goals
Tasks
tools/discover_model_catalog.py, update_parse_timestampto rejectboolvalues before the numeric branch (e.g.isinstance(value, bool)guard ortype(value) is intcheck).test_parse_timestamp_rejects_bool_created_attotests/tools/test_discover_model_catalog.pyprovingcreated_at: truein a GitHub Models payload is ignored and does not produce a 1970CatalogModel../scripts/sync_templates.shif the consumer template copy oftools/discover_model_catalog.pyis manifest-synced.Acceptance Criteria
pytest tests/tools/test_discover_model_catalog.py -qpasses, including the new bool-rejection test._parse_timestamp→ the new test must FAIL → revert.Implementation Notes
Review thread: stranske/Pension-Data#899 on
tools/discover_model_catalog.py. Upstream source verified attools/discover_model_catalog.py:48-58in this repository.