F.FF.....                                                                [100%]
=================================== FAILURES ===================================
______ test_lab_sharing_images_are_public_and_match_the_advertised_format ______

    def test_lab_sharing_images_are_public_and_match_the_advertised_format():
        client = TestClient(create_app('secret', lambda: None))
        headers = {'host': 'lab.kairo.icu', 'user-agent': 'facebookexternalhit/1.1'}
        for name in ['index.html', *sorted(PUBLIC_REPORTS)]:
            path = '/' if name == 'index.html' else '/lab/reports/' + name
            response = client.get(path, headers=headers)
            head = Head(response.text)
            image_url = head.meta.get('og:image', '')
>           assert image_url.startswith('https://lab.kairo.icu/assets/'), name
E           AssertionError: decision-to-sleep-2026-10-25.html
E           assert False
E            +  where False = <built-in method startswith of str object at 0x7feaa1ff1ec8>('https://lab.kairo.icu/assets/')
E            +    where <built-in method startswith of str object at 0x7feaa1ff1ec8> = ''.startswith

tests/test_lab_sharing.py:43: AssertionError
_______________________ test_generator_output_is_current _______________________

    def test_generator_output_is_current():
        r = subprocess.run([sys.executable, str(ROOT / "scripts" / "build-lab-taxonomy.py"), "--check"],
                           capture_output=True, text=True)
>       assert r.returncode == 0, r.stdout + r.stderr
E       AssertionError: taxonomy out of sync with reports dir: missing [], extra ['decision-to-sleep-2026-10-25.html', 'meaning-of-feel-2026-10-25.html']
E
E       assert 1 == 0
E        +  where 1 = CompletedProcess(args=['/usr/bin/python3', '/home/blaine/novexai/scripts/build-lab-taxonomy.py', '--check'], returncod...f sync with reports dir: missing [], extra ['decision-to-sleep-2026-10-25.html', 'meaning-of-feel-2026-10-25.html']\n").returncode

tests/test_lab_taxonomy.py:16: AssertionError
_________________ test_taxonomy_covers_exactly_public_reports __________________

    def test_taxonomy_covers_exactly_public_reports():
        disk = {p.name for p in (LAB / "reports").glob("*.html")}
        in_tax = {s for s, m in TAX["reports"].items() if not m.get("restricted")}
>       assert disk == in_tax
E       AssertionError: assert {'architectur...29.html', ...} == {'architectur...29.html', ...}
E
E         Extra items in the left set:
E         'decision-to-sleep-2026-10-25.html'
E         'meaning-of-feel-2026-10-25.html'
E         Use -v to get more diff

tests/test_lab_taxonomy.py:22: AssertionError
=========================== short test summary info ============================
FAILED tests/test_lab_sharing.py::test_lab_sharing_images_are_public_and_match_the_advertised_format
FAILED tests/test_lab_taxonomy.py::test_generator_output_is_current - Asserti...
FAILED tests/test_lab_taxonomy.py::test_taxonomy_covers_exactly_public_reports
3 failed, 6 passed in 0.74s
