Adds dao_presence.py: PresenceSchedulesDao (upsert_by_child with ON CONFLICT DO UPDATE - second schedule updates rather than raising; get_by_child returning None = present every day; delete) and PresenceOverridesDao (create with atomic child validation, list_by_child_and_range with inclusive overlap semantics, delete by id). Strict YYYY-MM-DD date validation; connection-lock serialization for all writes. 28 new tests incl. concurrent-upsert race; suite 421 passed.
Adds dao_presence.py: PresenceSchedulesDao (upsert_by_child with ON CONFLICT DO UPDATE - second schedule updates rather than raising; get_by_child returning None = present every day; delete) and PresenceOverridesDao (create with atomic child validation, list_by_child_and_range with inclusive overlap semantics, delete by id). Strict YYYY-MM-DD date validation; connection-lock serialization for all writes. 28 new tests incl. concurrent-upsert race; suite 421 passed.
- get_by_child raises ValueError for unknown children: None means ONLY
'existing child, no schedule' (present every day), never 'nonexistent
child silently present'
- concurrent-upsert test uses a gated async executor that pauses task A's
first transactional job after the connection lock is held, then
schedules task B so it provably queues on the lock; deterministic,
not timing-dependent
- leak guard's probe exemption narrowed from whole-function spans to the
exact string-literal lines holding the two sanctioned COUNT(*) queries
transaction() submits and awaits BEGIN before the DAO's first fetch
runs; gating that fetch proves BEGIN has executed - SQLite is actually
inside the open transaction - when task B is scheduled and queues.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Adds dao_presence.py: PresenceSchedulesDao (upsert_by_child with ON CONFLICT DO UPDATE - second schedule updates rather than raising; get_by_child returning None = present every day; delete) and PresenceOverridesDao (create with atomic child validation, list_by_child_and_range with inclusive overlap semantics, delete by id). Strict YYYY-MM-DD date validation; connection-lock serialization for all writes. 28 new tests incl. concurrent-upsert race; suite 421 passed.