Commit Graph
32 Commits
Author SHA1 Message Date
Joshua King fa502730ef test: guard all database entry points; real ImportFrom binding validation for bare raises
- probe guard now inspects execute, fetch_one, fetch_all AND
  execute_many calls, so bypasses through read/many paths are caught
- bare Name('raises') trusted only when the file's actual ImportFrom
  nodes bind 'raises' from pytest; competing imports shadowing
  'raises'/'pytest' from other modules fail closed
2026-09-14 09:04:49 -04:00
Joshua King fe8ceb2f40 test: sanctioned functions hold exactly their one table's probe; bare raises requires from-pytest import binding
- every raw statement naming either table in a sanctioned function must
  be exactly that function's expected-table probe (cross-table inserts
  rejected); per-function count still enforces exactly one
- bare Name('raises') is trusted only when the file imports it from
  pytest (from pytest import ... raises); other import bindings
  rejected
2026-09-14 09:03:23 -04:00
Joshua King d1e4603a15 test: matcher base-chain validation, casefolded table comparison 2026-09-14 09:00:25 -04:00
Joshua King 86bd4023f4 test: structurally-exact raises shape and identifier-normalized table matching
- raises block: func must be Attribute pytest.raises or a bare Name
  'raises'; matcher must be a Name/Attribute chain whose final segment
  is exactly IntegrityError (fake.IntegrityError/NotIntegrityError fail)
- insert target matching tokenizes the leading identifier, strips
  quotes/brackets, and takes the last dot-segment, so INSERT OR IGNORE
  INTO "main"."children" and attached-qualified spellings all count
  as table inserts requiring the raises block
2026-09-14 08:58:50 -04:00
Joshua King d34c08b5b7 test: AST-exact probe guard - pytest.raises shape, IntegrityError matcher, INSERT-variant normalization, per-function probe count
- raises block must be pytest.raises (func attr check) with matcher
  exactly naming IntegrityError (dotted-name boundary match, so
  NotIntegrityError fails)
- INSERT OR IGNORE/quoted/qualified table spellings normalized before
  matching so they cannot bypass the raises-block requirement
- probe count is per-function (each of the two sanctioned functions
  must hold exactly one probe), not an aggregate
2026-09-14 08:56:48 -04:00
Joshua King 020b3679e1 test: exact pytest.raises(IntegrityError) matcher, UPDATE/DELETE ban, unquote AST strings in probe guard 2026-09-14 08:54:38 -04:00
Joshua King 2265b5c3f1 test: real conflict-refresh assertions; AST-exact probe guard
- task-instances matrix test asserts same row id + rewritten due_time
  + pre-refresh None (the vacuous refreshed_same_id walrus is gone)
- compensating guard parses the two sanctioned functions' ASTs: each
  must contain its raw INSERT (children NOT NULL, admin_users PK),
  lexically inside a pytest.raises block, and no other raw SQL may
  name these tables anywhere else in the matrix file
2026-09-14 08:52:30 -04:00
Joshua King c41e28cb29 feat: add cross-table DAO unit suite covering all eight tables (#23) 2026-09-14 08:49:06 -04:00
orchestrator-agent 353f01e98c Handle missing or corrupt database on startup (#22) 2026-09-14 08:47:22 -04:00
orchestrator-agent 12bb4d58b4 DAO layer for task_instances and append-only completion_events (#21) 2026-09-14 08:28:00 -04:00
orchestrator-agent 29c058a045 DAO layer for presence schedules and overrides (#20) 2026-09-14 08:08:39 -04:00
orchestrator-agent c27ed24020 DAO layer for schedule_rules and task_definitions (#19) 2026-09-14 07:48:01 -04:00
orchestrator-agent 43b20f2b12 DAO layer for children and admin_users (#18) 2026-09-14 07:26:34 -04:00
orchestrator-agent 2c8c90a24e Implement the versioned migration runner (#17) 2026-09-14 07:10:23 -04:00
orchestrator-agent e98642e236 Schema v1: task_instances and completion_events tables (#16) 2026-09-14 06:53:14 -04:00
dev_agent 01905ec9ee feat: add schema v1 ddl for presence schedules and overrides (#15) 2026-09-13 21:59:59 -04:00
dev_agent 30748f786a feat: add schema v1 ddl for schedule_rules and task_definitions (#14) 2026-09-13 21:50:18 -04:00
dev_agent 3dae2eadd7 feat: add schema v1 ddl for children and admin_users (#13) 2026-09-13 21:39:18 -04:00
dev_agent eaf2e45e9a feat: add async sqlite connection wrapper with executor-backed queries (#12) 2026-09-13 21:35:36 -04:00
approver_agent 221222275a Merge pull request 'Feature 01: Integration Scaffold and Config Flow' (#10) from feature/58fafd51-67e5-4691-8b37-cf0bb545207c-integration-scaffold into dev 2026-09-13 19:20:50 -04:00
dev_agent b854013f1a test: wire pytest test harness with standard hass fixture (#9) 2026-09-13 19:18:10 -04:00
dev_agent c75de71f37 feat: add executor-backed SQLite path resolver helper (#8) 2026-09-13 18:26:23 -04:00
dev_agent e5cda26e11 feat: implement options flow for post-setup settings (#7) 2026-09-13 18:26:09 -04:00
dev_agent 3b9ffa383f feat: implement setup/unload lifecycle with options-reload listener (#5) 2026-09-13 15:02:42 -04:00
dev_agent 78f783cfad docs: point HACS installation at the public GitHub mirror (#6) 2026-09-13 15:01:09 -04:00
dev_agent f787d04a6b feat: implement UI config flow with single-instance enforcement (#4) 2026-09-13 14:52:06 -04:00
overseer ec888b6426 Merge pull request 'docs: add HACS repository metadata and developer setup docs' (#3) from task/b1a42fd5-1911-4ee5-97ba-d4ab9da9d918-hacs-metadata-and-docs into feature/58fafd51-67e5-4691-8b37-cf0bb545207c-integration-scaffold
Reviewed-on: #3
2026-09-13 09:32:14 -04:00
Joshua King 5bcaa54934 Merge remote-tracking branch 'origin/feature/58fafd51-67e5-4691-8b37-cf0bb545207c-integration-scaffold' into task/b1a42fd5-1911-4ee5-97ba-d4ab9da9d918-hacs-metadata-and-docs 2026-09-12 09:34:53 -04:00
dev_agent 8d04c95314 feat: define shared constants in const.py (#2) 2026-09-11 16:39:41 -04:00
Joshua King 20fc696f8e docs: add HACS repository metadata and developer setup docs 2026-09-11 09:06:02 -04:00
dev_agent 5c354c1ff5 feat: create custom_components/nestquest package structure and manifest.json (#1) 2026-09-10 16:50:59 -04:00
Joshua King 33e903fc7a first commit 2026-09-10 07:18:08 -04:00