................s.s.s. [  1%]
s.s.s.s.s............................................................... [  6%]
................................................. [  9%]
.................................................. [ 12%]
............................................................ [ 16%]
.................................................................. [ 20%]
.................................................. [ 24%]
....................................................FFF...... [ 28%]
FFFFF................................................................... [ 32%]
................. [ 34%]
......................................................................................................................... [ 42%]
..................................................... [ 45%]
................................................................................................................. [ 52%]
........................................................................ [ 57%]
...........................................F................................................... [ 63%]
........................................................................ [ 68%]
........................................ [ 71%]
.................................................................. [ 75%]
........................................................................ [ 80%]
................................................ [ 83%]
...................................................... [ 86%]
............................................................................. [ 92%]
.............................sss.s.s....F.......F........ [ 95%]
............................................ [ 98%]
....................                                                     [100%]
=================================== FAILURES ===================================
_ DialogControlFocusQtTests.test_reviewed_dialogs_never_open_with_title_control_focus (dialog='PyCForgeHelpDialog') _
tests/test_dialog_control_focus_1_0_5.py:139: in test_reviewed_dialogs_never_open_with_title_control_focus
    self._assert_content_focus_survives_reopen(dialog, target)
tests/test_dialog_control_focus_1_0_5.py:104: in _assert_content_focus_survives_reopen
    self.assertTrue(focused is target or target.isAncestorOf(focused))
E   AssertionError: False is not true
__ HelpSourceContractTests.test_catalog_classifies_a_multi_page_document_set ___
tests/test_help_documentation_0_16_3.py:31: in test_catalog_classifies_a_multi_page_document_set
    catalog = load_help_catalog()
              ^^^^^^^^^^^^^^^^^^^
pycforge/ide/qt_help.py:307: in load_help_catalog
    raise ValueError(f"Help page {page_id} has invalid keywords")
E   ValueError: Help page workspace has invalid keywords
_ HelpSourceContractTests.test_every_catalogued_page_is_complete_editable_offline_html _
tests/test_help_documentation_0_16_3.py:49: in test_every_catalogued_page_is_complete_editable_offline_html
    catalog = load_help_catalog()
              ^^^^^^^^^^^^^^^^^^^
pycforge/ide/qt_help.py:307: in load_help_catalog
    raise ValueError(f"Help page {page_id} has invalid keywords")
E   ValueError: Help page workspace has invalid keywords
___ HelpSourceContractTests.test_every_cross_page_link_and_fragment_resolves ___
tests/test_help_documentation_0_16_3.py:116: in test_every_cross_page_link_and_fragment_resolves
    catalog = load_help_catalog()
              ^^^^^^^^^^^^^^^^^^^
pycforge/ide/qt_help.py:307: in load_help_catalog
    raise ValueError(f"Help page {page_id} has invalid keywords")
E   ValueError: Help page workspace has invalid keywords
_ HelpDialogQtTests.test_dialog_has_classified_left_navigation_and_brand_identity _
tests/test_help_documentation_0_16_3.py:219: in test_dialog_has_classified_left_navigation_and_brand_identity
    self.assertEqual(self.dialog.navigation.topLevelItemCount(), 5)
E   AssertionError: 0 != 5
______ HelpDialogQtTests.test_global_search_routes_to_loop_and_file_pages ______
tests/test_help_documentation_0_16_3.py:228: in test_global_search_routes_to_loop_and_file_pages
    self.assertGreater(self.dialog.search_results.count(), 0)
E   AssertionError: 0 not greater than 0
_________ HelpDialogQtTests.test_navigation_and_external_link_boundary _________
tests/test_help_documentation_0_16_3.py:243: in test_navigation_and_external_link_boundary
    file_item = self.dialog._navigation_items["file-io"]
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E   KeyError: 'file-io'
_________ HelpDialogQtTests.test_page_and_geometry_state_are_persisted _________
tests/test_help_documentation_0_16_3.py:254: in test_page_and_geometry_state_are_persisted
    self.assertEqual(
E   AssertionError: '' != 'diagnostics'
E   + diagnostics
___________ test_previous_and_next_links_follow_the_complete_catalog ___________
tests/test_help_navigation_1_3_48.py:8: in test_previous_and_next_links_follow_the_complete_catalog
    pages = load_help_catalog().pages
            ^^^^^^^^^^^^^^^^^^^
pycforge/ide/qt_help.py:307: in load_help_catalog
    raise ValueError(f"Help page {page_id} has invalid keywords")
E   ValueError: Help page workspace has invalid keywords
_ Phase15CQtWorkspaceIntegrationTests.test_integration_modules_are_bounded_and_parseable (relative='pycforge/ide/qt_workspace_features.py') _
tests/test_phase15c_qt_workspace_integration.py:897: in test_integration_modules_are_bounded_and_parseable
    self.assertLess(len(source.splitlines()), 600)
E   AssertionError: 626 not less than 600
_ PublicDistributionTests.test_pypi_release_procedure_runs_all_local_gates (command='python.exe -m pytest -ra') _
tests/test_public_distribution.py:169: in test_pypi_release_procedure_runs_all_local_gates
    self.assertIn(command, procedure)
E   AssertionError: 'python.exe -m pytest -ra' not found in "# PyCForge 1.3.50 — Current release files\n\nCC uploads this complete verified pair from CC's own computer:\n\n- `pycforge-1.3.50-py3-none-any.whl`\n- `pycforge-1.3.50.tar.gz`\n\nThe accompanying PyCForge-1.3.50-Verification.txt records validation, scope,\nremaining limits and final artifact sizes and SHA256 values. Use only the pair\nidentified in that handoff. No publication is performed by the assistant.\n\nThe package, installed application, README heading and distribution metadata\nmust agree on 1.3.50. Historical screenshot labels and change entries retain\ntheir original versions. The README contains only the four approved image URLs.\n\nBefore uploading, run `python -m twine check --strict` on both distributions,\nthen `python -m tools.verify_public_distribution <release-directory>` from\nthis source tree. Complete native platform acceptance on CC's target machines.\n"
_ PublicDistributionTests.test_pypi_release_procedure_runs_all_local_gates (command='python.exe -m tools.validate_ting_agents') _
tests/test_public_distribution.py:169: in test_pypi_release_procedure_runs_all_local_gates
    self.assertIn(command, procedure)
E   AssertionError: 'python.exe -m tools.validate_ting_agents' not found in "# PyCForge 1.3.50 — Current release files\n\nCC uploads this complete verified pair from CC's own computer:\n\n- `pycforge-1.3.50-py3-none-any.whl`\n- `pycforge-1.3.50.tar.gz`\n\nThe accompanying PyCForge-1.3.50-Verification.txt records validation, scope,\nremaining limits and final artifact sizes and SHA256 values. Use only the pair\nidentified in that handoff. No publication is performed by the assistant.\n\nThe package, installed application, README heading and distribution metadata\nmust agree on 1.3.50. Historical screenshot labels and change entries retain\ntheir original versions. The README contains only the four approved image URLs.\n\nBefore uploading, run `python -m twine check --strict` on both distributions,\nthen `python -m tools.verify_public_distribution <release-directory>` from\nthis source tree. Complete native platform acceptance on CC's target machines.\n"
_ PublicDistributionTests.test_pypi_release_procedure_runs_all_local_gates (command='python.exe tools/validate_phase16.py --mode promotion') _
tests/test_public_distribution.py:169: in test_pypi_release_procedure_runs_all_local_gates
    self.assertIn(command, procedure)
E   AssertionError: 'python.exe tools/validate_phase16.py --mode promotion' not found in "# PyCForge 1.3.50 — Current release files\n\nCC uploads this complete verified pair from CC's own computer:\n\n- `pycforge-1.3.50-py3-none-any.whl`\n- `pycforge-1.3.50.tar.gz`\n\nThe accompanying PyCForge-1.3.50-Verification.txt records validation, scope,\nremaining limits and final artifact sizes and SHA256 values. Use only the pair\nidentified in that handoff. No publication is performed by the assistant.\n\nThe package, installed application, README heading and distribution metadata\nmust agree on 1.3.50. Historical screenshot labels and change entries retain\ntheir original versions. The README contains only the four approved image URLs.\n\nBefore uploading, run `python -m twine check --strict` on both distributions,\nthen `python -m tools.verify_public_distribution <release-directory>` from\nthis source tree. Complete native platform acceptance on CC's target machines.\n"
_ PublicDistributionTests.test_pypi_release_procedure_runs_all_local_gates (command='python.exe tools/build_programmers_guide.py --check') _
tests/test_public_distribution.py:169: in test_pypi_release_procedure_runs_all_local_gates
    self.assertIn(command, procedure)
E   AssertionError: 'python.exe tools/build_programmers_guide.py --check' not found in "# PyCForge 1.3.50 — Current release files\n\nCC uploads this complete verified pair from CC's own computer:\n\n- `pycforge-1.3.50-py3-none-any.whl`\n- `pycforge-1.3.50.tar.gz`\n\nThe accompanying PyCForge-1.3.50-Verification.txt records validation, scope,\nremaining limits and final artifact sizes and SHA256 values. Use only the pair\nidentified in that handoff. No publication is performed by the assistant.\n\nThe package, installed application, README heading and distribution metadata\nmust agree on 1.3.50. Historical screenshot labels and change entries retain\ntheir original versions. The README contains only the four approved image URLs.\n\nBefore uploading, run `python -m twine check --strict` on both distributions,\nthen `python -m tools.verify_public_distribution <release-directory>` from\nthis source tree. Complete native platform acceptance on CC's target machines.\n"
_ PublicDistributionTests.test_pypi_release_procedure_runs_all_local_gates (command='python.exe -m tools.verify_pypi_readme') _
tests/test_public_distribution.py:169: in test_pypi_release_procedure_runs_all_local_gates
    self.assertIn(command, procedure)
E   AssertionError: 'python.exe -m tools.verify_pypi_readme' not found in "# PyCForge 1.3.50 — Current release files\n\nCC uploads this complete verified pair from CC's own computer:\n\n- `pycforge-1.3.50-py3-none-any.whl`\n- `pycforge-1.3.50.tar.gz`\n\nThe accompanying PyCForge-1.3.50-Verification.txt records validation, scope,\nremaining limits and final artifact sizes and SHA256 values. Use only the pair\nidentified in that handoff. No publication is performed by the assistant.\n\nThe package, installed application, README heading and distribution metadata\nmust agree on 1.3.50. Historical screenshot labels and change entries retain\ntheir original versions. The README contains only the four approved image URLs.\n\nBefore uploading, run `python -m twine check --strict` on both distributions,\nthen `python -m tools.verify_public_distribution <release-directory>` from\nthis source tree. Complete native platform acceptance on CC's target machines.\n"
_ PublicDistributionTests.test_pypi_release_procedure_runs_all_local_gates (command='python.exe -m tools.verify_public_distribution $ReleaseDir') _
tests/test_public_distribution.py:169: in test_pypi_release_procedure_runs_all_local_gates
    self.assertIn(command, procedure)
E   AssertionError: 'python.exe -m tools.verify_public_distribution $ReleaseDir' not found in "# PyCForge 1.3.50 — Current release files\n\nCC uploads this complete verified pair from CC's own computer:\n\n- `pycforge-1.3.50-py3-none-any.whl`\n- `pycforge-1.3.50.tar.gz`\n\nThe accompanying PyCForge-1.3.50-Verification.txt records validation, scope,\nremaining limits and final artifact sizes and SHA256 values. Use only the pair\nidentified in that handoff. No publication is performed by the assistant.\n\nThe package, installed application, README heading and distribution metadata\nmust agree on 1.3.50. Historical screenshot labels and change entries retain\ntheir original versions. The README contains only the four approved image URLs.\n\nBefore uploading, run `python -m twine check --strict` on both distributions,\nthen `python -m tools.verify_public_distribution <release-directory>` from\nthis source tree. Complete native platform acceptance on CC's target machines.\n"
___ PublicDistributionTests.test_pypi_release_procedure_runs_all_local_gates ___
tests/test_public_distribution.py:170: in test_pypi_release_procedure_runs_all_local_gates
    self.assertIn("Do not use `-k`", procedure)
E   AssertionError: 'Do not use `-k`' not found in "# PyCForge 1.3.50 — Current release files\n\nCC uploads this complete verified pair from CC's own computer:\n\n- `pycforge-1.3.50-py3-none-any.whl`\n- `pycforge-1.3.50.tar.gz`\n\nThe accompanying PyCForge-1.3.50-Verification.txt records validation, scope,\nremaining limits and final artifact sizes and SHA256 values. Use only the pair\nidentified in that handoff. No publication is performed by the assistant.\n\nThe package, installed application, README heading and distribution metadata\nmust agree on 1.3.50. Historical screenshot labels and change entries retain\ntheir original versions. The README contains only the four approved image URLs.\n\nBefore uploading, run `python -m twine check --strict` on both distributions,\nthen `python -m tools.verify_public_distribution <release-directory>` from\nthis source tree. Complete native platform acceptance on CC's target machines.\n"
----------------------------- Captured stdout call -----------------------------
uuuuuu
_ Phase16ReleaseValidatorTests.test_active_identities_and_decision_trace_schema_are_exact _
tests/test_validate_phase16.py:29: in test_active_identities_and_decision_trace_schema_are_exact
    self.assertTrue(identities["passed"], identities["errors"])
E   AssertionError: False is not true : ['CURRENT_STATE.md does not declare 1.3.50']
_ Phase16ReleaseValidatorTests.test_pypi_only_procedure_uses_active_gate_and_keeps_history_frozen _
tests/test_validate_phase16.py:338: in test_pypi_only_procedure_uses_active_gate_and_keeps_history_frozen
    self.assertIn("python.exe -m pytest -ra", release)
E   AssertionError: 'python.exe -m pytest -ra' not found in "# PyCForge 1.3.50 — Current release files\n\nCC uploads this complete verified pair from CC's own computer:\n\n- `pycforge-1.3.50-py3-none-any.whl`\n- `pycforge-1.3.50.tar.gz`\n\nThe accompanying PyCForge-1.3.50-Verification.txt records validation, scope,\nremaining limits and final artifact sizes and SHA256 values. Use only the pair\nidentified in that handoff. No publication is performed by the assistant.\n\nThe package, installed application, README heading and distribution metadata\nmust agree on 1.3.50. Historical screenshot labels and change entries retain\ntheir original versions. The README contains only the four approved image URLs.\n\nBefore uploading, run `python -m twine check --strict` on both distributions,\nthen `python -m tools.verify_public_distribution <release-directory>` from\nthis source tree. Complete native platform acceptance on CC's target machines.\n"
=========================== short test summary info ============================
SUBFAILED(dialog='PyCForgeHelpDialog') tests/test_dialog_control_focus_1_0_5.py::DialogControlFocusQtTests::test_reviewed_dialogs_never_open_with_title_control_focus
FAILED tests/test_help_documentation_0_16_3.py::HelpSourceContractTests::test_catalog_classifies_a_multi_page_document_set
FAILED tests/test_help_documentation_0_16_3.py::HelpSourceContractTests::test_every_catalogued_page_is_complete_editable_offline_html
FAILED tests/test_help_documentation_0_16_3.py::HelpSourceContractTests::test_every_cross_page_link_and_fragment_resolves
FAILED tests/test_help_documentation_0_16_3.py::HelpDialogQtTests::test_dialog_has_classified_left_navigation_and_brand_identity
FAILED tests/test_help_documentation_0_16_3.py::HelpDialogQtTests::test_global_search_routes_to_loop_and_file_pages
FAILED tests/test_help_documentation_0_16_3.py::HelpDialogQtTests::test_navigation_and_external_link_boundary
FAILED tests/test_help_documentation_0_16_3.py::HelpDialogQtTests::test_page_and_geometry_state_are_persisted
FAILED tests/test_help_navigation_1_3_48.py::test_previous_and_next_links_follow_the_complete_catalog
SUBFAILED(relative='pycforge/ide/qt_workspace_features.py') tests/test_phase15c_qt_workspace_integration.py::Phase15CQtWorkspaceIntegrationTests::test_integration_modules_are_bounded_and_parseable
SUBFAILED(command='python.exe -m pytest -ra') tests/test_public_distribution.py::PublicDistributionTests::test_pypi_release_procedure_runs_all_local_gates
SUBFAILED(command='python.exe -m tools.validate_ting_agents') tests/test_public_distribution.py::PublicDistributionTests::test_pypi_release_procedure_runs_all_local_gates
SUBFAILED(command='python.exe tools/validate_phase16.py --mode promotion') tests/test_public_distribution.py::PublicDistributionTests::test_pypi_release_procedure_runs_all_local_gates
SUBFAILED(command='python.exe tools/build_programmers_guide.py --check') tests/test_public_distribution.py::PublicDistributionTests::test_pypi_release_procedure_runs_all_local_gates
SUBFAILED(command='python.exe -m tools.verify_pypi_readme') tests/test_public_distribution.py::PublicDistributionTests::test_pypi_release_procedure_runs_all_local_gates
SUBFAILED(command='python.exe -m tools.verify_public_distribution $ReleaseDir') tests/test_public_distribution.py::PublicDistributionTests::test_pypi_release_procedure_runs_all_local_gates
FAILED tests/test_public_distribution.py::PublicDistributionTests::test_pypi_release_procedure_runs_all_local_gates
FAILED tests/test_validate_phase16.py::Phase16ReleaseValidatorTests::test_active_identities_and_decision_trace_schema_are_exact
FAILED tests/test_validate_phase16.py::Phase16ReleaseValidatorTests::test_pypi_only_procedure_uses_active_gate_and_keeps_history_frozen
19 failed, 1499 passed, 13 skipped, 3025 subtests passed in 338.88s (0:05:38)
