Materialize instances when a quest definition is created
create_quest_definition persisted the rule, definition, assignees and windows but never called regenerate_for_definition, unlike edit, assign, unassign and activate. A new task therefore had no quest_instances rows and stayed off the panel board until an unrelated write regenerated it. Call regenerate_for_definition after the DAO write, using the host clock and the default horizon, and add a test that a created weekly definition has only today-or-later instances. Update test fixtures that relied on create writing no instances: close the seeded one-day rules with end_date, clear the table before the gated materialize walk, and adjust the admin regenerate tests to the new create behaviour. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -102,15 +102,20 @@ async def _seed_missed_household(
|
||||
database, "Old chore", rule, [ada.id], [("evening", "18:30")]
|
||||
)
|
||||
await materialize(database, yesterday_iso, yesterday_iso, today=yesterday)
|
||||
# A quest due TODAY (created after the yesterday walk so it has
|
||||
# no past-due instance): the post-downtime catch-up run's
|
||||
# A quest due TODAY only (created after the yesterday walk so it
|
||||
# has no past-due instance; ``end_date`` keeps create's horizon
|
||||
# regeneration to today): the post-downtime catch-up run's
|
||||
# target — inside [watermark=today, later_today) but not
|
||||
# inside the day-one sweep's window.
|
||||
await create_quest_definition(
|
||||
database,
|
||||
"Recoverable chore",
|
||||
ScheduleRule.from_dict(
|
||||
{"rule_type": "daily", "start_date": today_iso}
|
||||
{
|
||||
"rule_type": "daily",
|
||||
"start_date": today_iso,
|
||||
"end_date": today_iso,
|
||||
}
|
||||
),
|
||||
[ada.id],
|
||||
[("afternoon", "17:00")],
|
||||
|
||||
Reference in New Issue
Block a user