feat(ttp): E.3.3 repository — insert_tags + listing rollups (dual backend)

Dialect-split: portable rollup queries on TTPMixin; bulk insert with
ON CONFLICT DO NOTHING / INSERT IGNORE in the per-dialect repos.
Confidence-floor (< 0.3) drop applied at mixin layer before the
dialect hook. BaseRepository now declares the six TTP methods abstract.

Tests in tests/web/db/test_ttp_repo.py flipped from pytest.fail stubs
to real dual-backend behavioral tests; tests/ttp/test_confidence.py
drop-below-floor xfail removed.
This commit is contained in:
2026-05-01 08:04:46 -04:00
parent 226b3adfa2
commit fee697694d
7 changed files with 452 additions and 98 deletions

View File

@@ -2917,7 +2917,12 @@ Order:
land with E.3.5/E.3.6 RuleStore — see comment at
`decnet/bus/topics.py:281-283`).
3. **Repository** — implement `insert_tags`, the listing methods.
`test_ttp_repo.py` green on both backends.
`test_ttp_repo.py` green on both backends. ✅ done. Dialect-split
bulk-insert hook lives on `SQLiteRepository._insert_tags_or_ignore`
(sqlite `ON CONFLICT DO NOTHING`) and
`MySQLRepository._insert_tags_or_ignore` (`INSERT IGNORE`).
Confidence-floor drop (`< 0.3`) applied at mixin layer before the
dialect hook fires.
4. **API endpoints** — fill in handlers reading from repo. Empty
store still returns empty lists; `test_*.py` shape tests green.
5. **RuleStore — FilesystemRuleStore** — implement YAML parse,