| """ | |
| QA subsystem — automated checks before publish. | |
| Two layers: | |
| checks.py Individual ``QACheck`` callables that each return a | |
| list of issues (dicts with stable ``code`` keys). | |
| Pure functions over a manifest dict + cfg. | |
| report.py ``run_qa(experience)`` runs every registered check, | |
| aggregates issues + a verdict (``pass`` / ``warn`` / | |
| ``fail``), and persists the result on | |
| ``ix_qa_reports``. | |
| Severity model: each issue carries ``severity`` ∈ {info, warning, | |
| error}. ``run_qa`` returns ``fail`` if any error issue is present, | |
| ``warn`` if any warning, otherwise ``pass``. The publish flow | |
| refuses to advance an experience to ``status=published`` while | |
| the latest QA report is ``fail``. | |
| """ | |
| from .checks import QACheck, QAIssue, all_checks | |
| from .report import QASummary, run_qa | |
| __all__ = [ | |
| "QACheck", | |
| "QAIssue", | |
| "all_checks", | |
| "QASummary", | |
| "run_qa", | |
| ] | |