Deactivate and reactivate a child without data loss (Feature 03, task 2) #52

3 Commits
Author SHA1 Message Date
Joshua King cfe1609df2 Review fix: set_child_active rejects non-bool is_active
Review round 1 (Codex gpt-5.6-terra): the DAO's int() silently coerced
strings and numerics (1, 0, 1.0) into an unintended active state.
The business layer now requires a real bool, before the existence
check's caller-intent can be lost, with a coercible-input test matrix;
the refused transition leaves the record untouched. Suite: 860 passed.
2026-09-15 16:35:18 -04:00
Joshua King 5c74034f81 Fix leak-guard collision: reword no-delete guard docstring
The guard test's docstring contained the phrase matching the
children/admin_users leak-guard pattern; reworded. Full suite green
before commit this time: 853 passed.
2026-09-15 16:32:18 -04:00
Joshua King 1d247fbca1 Deactivation preserves every referencing row (Feature 03, task 2)
Tests for the no-data-loss deactivation contract over the existing
set_child_active business function: a child with a definition,
instance and completion event keeps all three rows byte-identical
through deactivate and reactivate, is excluded from (and restored to)
the active list, and stays in the full list. A structural guard proves
the no-delete property: no module carries DELETE targeting children
and ChildrenDao exposes no delete-shaped method. Suite: 853 passed.
2026-09-15 16:30:36 -04:00