pycforge 1.0.2__tar.gz → 1.0.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pycforge-1.0.2 → pycforge-1.0.4}/CHANGELOG.md +21 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/CURRENT_STATE.md +4 -4
- {pycforge-1.0.2 → pycforge-1.0.4}/PKG-INFO +10 -8
- {pycforge-1.0.2 → pycforge-1.0.4}/PYPI_RELEASE.md +16 -16
- {pycforge-1.0.2 → pycforge-1.0.4}/README.md +9 -7
- {pycforge-1.0.2 → pycforge-1.0.4}/RELEASE_NOTES.md +26 -1
- pycforge-1.0.4/pycforge/_version.py +1 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/help/start.html +1 -1
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge.egg-info/PKG-INFO +10 -8
- {pycforge-1.0.2 → pycforge-1.0.4}/pyproject.toml +1 -1
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_checkpoint_e_versioning.py +1 -1
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase10_opening.py +2 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase12_2_metadata.py +3 -3
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase13_contracts.py +1 -1
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase14_numeric_contracts.py +1 -1
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase14b_conditional_contracts.py +1 -1
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase14c_keyword_contracts.py +1 -1
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase14d_keyword_only_contracts.py +1 -1
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase15a_metadata.py +2 -2
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_release_1_0_2_presentation.py +7 -2
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_release_contract_0_16_3.py +2 -2
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_set_conversion_1_0_1.py +2 -2
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_validate_checkpoint_e.py +3 -3
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_validate_phase16.py +1 -1
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_validate_pycforge_workspace_0_12_2.py +2 -2
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/validate_phase16.py +2 -2
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/verify_public_distribution.py +17 -2
- pycforge-1.0.2/pycforge/_version.py +0 -1
- {pycforge-1.0.2 → pycforge-1.0.4}/CONVERSION_ROADMAP.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/EXPERT_REVIEW_1.0.1.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/HELP.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/LICENSE +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/MANIFEST.in +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/PyCForge_Checkpoint_E_v0_14_4_Project_Handoff.txt +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/PyCForge_Phase_10_v0_10_0_Project_Handoff.txt +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/PyCForge_Phase_11_v0_11_0_Project_Handoff.txt +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/PyCForge_Phase_12_v0_12_0_Project_Handoff.txt +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/PyCForge_Phase_13_v0_13_0_Project_Handoff.txt +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/PyCForge_Phase_14A_v0_14_0_Project_Handoff.txt +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/PyCForge_Phase_14B_v0_14_1_Project_Handoff.txt +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/PyCForge_Phase_14C_v0_14_2_Project_Handoff.txt +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/PyCForge_Phase_14D_v0_14_3_Project_Handoff.txt +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/PyCForge_Phase_15A_v0_15_0_Project_Handoff.txt +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/PyCForge_Phase_15B_v0_15_1_Project_Handoff.txt +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/PyCForge_Phase_15C_v0_15_2_Project_Handoff.txt +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/PyCForge_Phase_9_v0_9_0_Project_Handoff.txt +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/ROADMAP.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/THIRD_PARTY_NOTICES.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/TING_INTEGRATION_REVIEW.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/docs/PyCForge_v0_15_2_Conversion_Examples_Reference_Edition.pdf +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/docs/PyCForge_v0_16_0_Programmers_Conversion_Guide.pdf +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/docs/images/pycforge-help-0.16.3.png +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/docs/images/pycforge-ting-agents-1.0.2.png +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/docs/images/pycforge-workspace-0.15.2.png +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/docs/images/pycforge-workspace-0.16.1.png +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/docs/images/pycforge-workspace-0.16.3.png +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/docs/images/pycforge-workspace-1.0.2.png +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/docs/pycforge_workspace_quality_addendum.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/docs/python_to_c_converter_architecture_revision_3_1.txt +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/docs/python_to_c_converter_architecture_revision_3_2_addendum.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/docs/python_to_c_converter_architecture_revision_3_3_workspace_addendum.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/checkpoint_e/debt_delta.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/checkpoint_e/entry_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/checkpoint_e/full_subset_validation.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/checkpoint_e/release_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/checkpoint_e/workspace_debt.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_02/architecture_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_02/artifact_manifest.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_02/debt_delta.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_02/decision_trace_sample.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_02/determinism_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_02/golden_manifest.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_02/resource_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_02/rule_manifest.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_02/semantics_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_02/test_summary.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_02/transition_packet.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_04/golden_manifest.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_06/architecture_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_06/conversion_debt.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_06/decision_trace_sample.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_06/determinism_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_06/first_slice_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_06/golden_manifest.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_06/rule_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_06/test_summary.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_06/transition_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_07/architecture_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_07/determinism_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_07/rule_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_07/transition_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_08/architecture_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_08/checkpoint_c.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_08/determinism_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_08/observer_cancellation_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_08/rule_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_08/test_summary.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_08/transition_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_09/architecture_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_09/conversion_debt.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_09/determinism_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_09/mapping_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_09/observer_cancellation_resource_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_09/phase9_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_09/python_package_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_09/review_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_09/rule_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_09/semantic_gate_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_09/test_summary.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_09/transition_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_10/architecture_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_10/determinism_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_10/helper_registry_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_10/opening_checkpoint_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_10/opening_package_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_10/opening_test_summary.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_10/package_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_10/phase10_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_10/progress_observer_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_10/qt_widget_smoke_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_10/rule_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_10/semantic_preservation_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_10/test_summary.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_10/transition_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_11/architecture_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_11/container_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_11/determinism_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_11/helper_registry_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_11/package_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_11/phase11_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_11/rule_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_11/schema_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_11/semantic_preservation_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_11/test_summary.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_11/transition_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_12/architecture_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_12/container_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_12/determinism_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_12/helper_registry_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_12/module_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_12/package_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_12/phase12_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_12/rule_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_12/schema_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_12/semantic_preservation_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_12/source_boundary_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_12/test_summary.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_12/transition_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_13/release_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_14/conversion_debt.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_14/entry_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_14/release_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_14b/conversion_debt.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_14b/entry_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_14b/release_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_14c/conversion_debt.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_14c/entry_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_14c/release_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_14d/conversion_debt.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_14d/entry_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_14d/release_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_15a/performance_evidence.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_15a/release_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_15a/validation_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_15b/action_registry_evidence.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_15b/validation_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_15b/visual_system_evidence.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_15c/action_registry_evidence.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_15c/feature_evidence.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_15c/performance_evidence.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/phase_15c/validation_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/pycforge_workspace_0_12_1/gate_evidence.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/pycforge_workspace_0_12_1/release_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/pycforge_workspace_0_12_2/manual_review.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/pycforge_workspace_0_12_2/qt_widget_smoke_scale_1.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/pycforge_workspace_0_12_2/qt_widget_smoke_scale_1.png +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/pycforge_workspace_0_12_2/qt_widget_smoke_scale_2.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/pycforge_workspace_0_12_2/qt_widget_smoke_scale_2.png +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/pycforge_workspace_0_12_2/release_report.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/evidence/ting_agents/compiler_custody_attestation.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/fixtures/c_ir/essential_golden.c +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/fixtures/first_milestone/add.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/fixtures/first_milestone/expected.c +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/fixtures/first_milestone/expected_ruleplans.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/fixtures/support_templates/pycf_i64_floor_div_v1.c +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/fixtures/support_templates/pycf_i64_floor_mod_v1.c +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/licenses/TING_REASONER.txt +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/__init__.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/__main__.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/_vendor/__init__.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/_vendor/ting_reasoner/__init__.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/_vendor/ting_reasoner/engine.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/_vendor/ting_reasoner/errors.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/_vendor/ting_reasoner/ir.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/_vendor/ting_reasoner/model.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/_vendor/ting_reasoner/nd.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/_vendor/ting_reasoner/py.typed +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/_vendor/ting_reasoner/results.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/_vendor/ting_reasoner/store.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/_vendor/ting_reasoner/transactions.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/_vendor/ting_reasoner_provenance.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/__init__.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/analysis/__init__.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/analysis/functions.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/analysis/model.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/analysis/planning.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/analysis/stage.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/analysis/symbols.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/analysis/validation.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/c_output/__init__.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/c_output/conformance.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/c_output/renderer.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/conditional_regions/__init__.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/conditional_regions/analysis.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/conditional_regions/lowering.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/conditional_regions/model.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/conditional_regions/validation.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/containers/__init__.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/containers/analysis.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/containers/lowering.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/containers/model.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/contracts/__init__.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/contracts/configuration.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/contracts/identifiers.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/contracts/versions.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/core/__init__.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/core/artifact_io.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/core/cancellation.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/core/canonicalization.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/core/context.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/core/diagnostics.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/core/enums.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/core/fingerprint.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/core/pipeline.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/core/progress.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/core/request.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/core/resource_policy.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/core/result.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/core/serialization.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/core/stage.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/core/stage_artifact.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/core/stage_outcome.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/decision_trace/__init__.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/decision_trace/recorder.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/facade.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/file_io/__init__.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/file_io/analysis.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/file_io/conformance.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/file_io/model.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/file_io/runtime.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/file_io/validation.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/frontend/__init__.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/frontend/normalizer.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/frontend/parser.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/frontend/source_document.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/frontend/stages.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/frontend/validation.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/io/__init__.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/io/atomic_writer.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/ir/__init__.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/ir/c_ir/__init__.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/ir/c_ir/builder.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/ir/c_ir/model.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/ir/c_ir/serialization.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/ir/c_ir/validation.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/ir/python_ir/__init__.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/ir/python_ir/nodes.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/keyword_calls/__init__.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/keyword_calls/analysis.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/keyword_calls/lowering.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/keyword_calls/model.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/keyword_calls/validation.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/keyword_only_calls/__init__.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/keyword_only_calls/analysis.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/keyword_only_calls/lowering.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/keyword_only_calls/model.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/keyword_only_calls/validation.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/loop_completion/__init__.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/loop_completion/analysis.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/loop_completion/lowering.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/loop_completion/model.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/loop_completion/validation.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/lowering.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/modules/__init__.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/modules/analysis.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/modules/lowering.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/modules/model.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/modules/stage.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/numeric_semantics/__init__.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/numeric_semantics/analysis.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/numeric_semantics/lowering.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/numeric_semantics/model.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/records/__init__.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/records/analysis.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/records/lowering.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/records/model.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/rules/__init__.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/scope_lifetimes/__init__.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/scope_lifetimes/analysis.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/scope_lifetimes/model.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/scope_lifetimes/validation.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/support_templates/__init__.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/support_templates/assembly.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/support_templates/factories.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/support_templates/model.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/support_templates/registry.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/telemetry/__init__.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/converter/telemetry/sink.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/__init__.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/__main__.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/_forgelens_builder.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/_forgelens_model.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/_worker_event_codec.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/_worker_protocol_json.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/_worker_protocol_types.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/_worker_request_codec.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/_worker_request_data.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/_worker_result_data.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/action_contract.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/action_validation.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/command_palette.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/controller.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/controller_conversion.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/controller_io.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/editor.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/editor_commands_qt.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/editor_lexical.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/editor_markers.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/editor_sidebars.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/editor_syntax.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/find_replace.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/forgelens.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/icons.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/io_service.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/model.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/panels.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/positions.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/process_worker.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/qt.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/qt_about.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/qt_actions.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/qt_close.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/qt_command_palette.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/qt_contract.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/qt_dialog_chrome.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/qt_documents.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/qt_editor_buffers.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/qt_editor_settings.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/qt_editor_surfaces.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/qt_file_dialogs.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/qt_forgelens.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/qt_help.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/qt_icons.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/qt_menus.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/qt_open_queue.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/qt_projection.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/qt_screen_geometry.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/qt_session.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/qt_session_state.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/qt_shell.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/qt_shell_interactions.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/qt_source_preview.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/qt_startup.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/qt_state.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/qt_text_settings.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/qt_ting_actions.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/qt_ting_feedback.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/qt_toast.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/qt_window_chrome.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/qt_window_resize.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/qt_workspace_features.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/qt_workspace_navigation.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/qt_workspace_observers.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/qt_workspace_panels.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/qt_workspace_widgets.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/help/calls-modules.html +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/help/catalog.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/help/cli-api.html +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/help/containers-records.html +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/help/contracts.html +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/help/control-flow.html +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/help/diagnostics.html +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/help/file-io.html +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/help/help-authoring.html +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/help/help.css +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/help/safety-limits.html +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/help/shortcuts.html +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/help/ting-agents.html +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/help/types-expressions.html +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/help/workspace.html +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/add-document.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/brand-mark.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/bundle-search.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/cancel.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/check.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/chevron-right.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/close.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/collapse-all.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/command-palette.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/convert.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/copy.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/cut.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/decision-trace.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/details.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/diagnostics.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/duplicate-line.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/exit.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/expand-all.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/export.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/find.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/go-to-line.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/go-to-output.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/go-to-source.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/help.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/history.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/indent.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/link-c.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/mappings.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/module.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/move-down.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/move-line-down.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/move-line-up.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/move-up.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/next.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/open.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/outdent.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/outline.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/paste.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/previous.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/primary-module.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/redo.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/remove-document.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/replace.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/save-as.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/save.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/select-all.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/settings.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/show-c.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/split-view.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/summary.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/telemetry.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/toggle-comment.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/toggle-fold.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/undo.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/resources/icons/whitespace.svg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/revisions.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/search_service.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/session_history.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/source_editing.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/source_preview.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/source_structure.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/source_structure_async.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/supervisor.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/theme.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/theme_steel_stylesheet.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/theme_stylesheet.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/theme_workspace_stylesheet.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/ting_feedback.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/visual_tokens.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/worker_protocol.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/workspace_search.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ide/workspace_session.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/laboratory/__init__.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/laboratory/audits.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/laboratory/checkpoint_e.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/laboratory/cli.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/laboratory/exit_codes.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/laboratory/keyword_audit.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/laboratory/keyword_only_audit.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ting_agents/__init__.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ting_agents/coordinator.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ting_agents/errors.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ting_agents/model.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ting_agents/registry.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ting_agents/rulesets/capability.ting +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ting_agents/rulesets/capability.tingspec.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ting_agents/rulesets/lowering.ting +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ting_agents/rulesets/lowering.tingspec.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ting_agents/rulesets/ownership.ting +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ting_agents/rulesets/ownership.tingspec.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ting_agents/rulesets/registry.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ting_agents/rulesets/semantics.ting +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ting_agents/rulesets/semantics.tingspec.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ting_agents/rulesets/syntax.ting +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ting_agents/rulesets/syntax.tingspec.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ting_agents/rulesets/verification.ting +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge/ting_agents/rulesets/verification.tingspec.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge.egg-info/SOURCES.txt +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge.egg-info/dependency_links.txt +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge.egg-info/entry_points.txt +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge.egg-info/requires.txt +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/pycforge.egg-info/top_level.txt +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/schemas/decision_trace.schema.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/schemas/telemetry.schema.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/setup.cfg +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/specifications/analysis_and_planning.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/specifications/approximation_policy.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/specifications/bounded_containers.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/specifications/c_ir_schema.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/specifications/c_output_style.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/specifications/c_renderer_contract.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/specifications/configuration.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/specifications/conversion_semantics.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/specifications/diagnostics.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/specifications/fact_table_schema.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/specifications/feature_matrix.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/specifications/generated_c_conformance.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/specifications/module_bundles.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/specifications/phase14a_bounded_integer_divmod.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/specifications/phase14b_conditional_temporary_regions.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/specifications/phase14c_direct_keyword_calls.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/specifications/phase14d_required_keyword_only_calls.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/specifications/phase6_first_complete_slice.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/specifications/phase7_workspace.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/specifications/phase8_control_flow.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/specifications/phase9_functions_calls.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/specifications/product_boundary.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/specifications/pycforge_workspace.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/specifications/pycforge_workspace_legacy_0_1.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/specifications/python_ir_schema.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/specifications/representation_ownership_lifetime.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/specifications/resource_cancellation_save.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/specifications/result_and_fingerprints.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/specifications/rule_plan_schema.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/specifications/source_bundle.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/specifications/source_frontend.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/specifications/static_records.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/specifications/support_templates.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/specifications/supported_python.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/specifications/target_c_source_contract.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/specifications/ting_agent_architecture.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_about_and_window_chrome_review.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_checkpoint_e_audits.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_checkpoint_e_feature_matrix.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_checkpoint_e_predecessor_equivalence.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_checkpoint_e_release_packaging.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_editor_behavior_qt.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_editor_settings_qt.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_final_windows_acceptance_1_0_1.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_forgelens.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_forgelens_controller.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_frontend_eof_boundaries.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_help_documentation_0_16_3.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase0.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase1.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase10.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase11.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase12.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase12_1_editor.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase12_1_pycforge_theme.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase12_2_components.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase12_2_controller.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase12_2_qt.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase13_audits.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase13_c_ir.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase13_end_to_end.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase13_record_analysis.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase13_record_lowering.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase13_record_validation.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase14_numeric_end_to_end.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase14_numeric_hardening.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase14b_audits.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase14b_conditional_analysis.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase14b_conditional_hardening.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase14b_conditional_lowering.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase14c_cumulative_eligibility.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase14c_keyword_analysis.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase14c_keyword_audits.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase14c_keyword_hardening.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase14c_keyword_lowering.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase14d_cumulative_eligibility.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase14d_keyword_only_analysis.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase14d_keyword_only_hardening.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase14d_keyword_only_lowering.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase15a_async_search.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase15a_controller.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase15a_editor_decomposition.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase15a_editor_large_file.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase15a_io_service.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase15a_position_indexes.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase15a_qt_decomposition.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase15a_release_packaging.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase15a_revisions.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase15a_stress.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase15a_supervisor.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase15a_worker_protocol.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase15b_action_foundation.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase15b_action_integration.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase15b_release_contract.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase15b_release_packaging.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase15b_visual_foundation.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase15b_visual_integration.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase15c_action_contract.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase15c_command_palette.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase15c_qt_command_contract.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase15c_qt_panels_contract.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase15c_qt_position_reverse.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase15c_qt_workspace_integration.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase15c_release_contract.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase15c_release_packaging.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase15c_session_history.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase15c_source_editing.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase15c_source_structure.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase15c_visual_system.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase15c_workspace_search.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase15c_workspace_session.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase16_c_ir_validation_hardening.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase16_file_io_analysis.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase16_file_io_end_to_end.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase16_file_io_payload_validation.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase16_file_io_registry.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase16_file_io_rejections.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase16_file_io_runtime.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase16_file_io_validation.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase16_loop_analysis.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase16_loop_end_to_end.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase16_loop_lowering.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase16_loop_payload_validation.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase16_loop_resources.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase16_loop_validation.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase16_scope_analysis.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase16_scope_boundaries.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase16_scope_payload_validation.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase16_scope_validation.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase2.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase3.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase4.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase5.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase6.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase7.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase8.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_phase9.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_programmers_guide.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_public_distribution.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_pycforge_qt_integration.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_pycforge_workspace.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_qt_file_dialogs.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_qt_forgelens.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_qt_open_queue.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_review_hardening.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_smoke_pycforge_workspace_0_12_2.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_source_preview.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_startup_progress_0_16_3.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_steel_theme.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_ting_agents.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_typing_ui_stability_qt.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_ui_continuity_1_0_1.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_ui_lifecycle_0_16_3.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_ui_review_corrections_1_0_1.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_validate_phase13.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_validate_phase14.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_validate_phase14b.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_validate_phase14c.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_validate_phase14d.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_validate_phase15a.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_validate_phase15b.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_validate_phase15c.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_validate_workspace_usability_0_15_3.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tests/test_windows_ui_scale_and_identity_1_0_1.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/_phase15a_runtime_validation.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/_phase15b_release_contract.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/_phase15c_release_contract.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/build_checkpoint_e_release.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/build_phase15a_release.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/build_phase15b_release.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/build_phase15c_release.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/build_programmers_guide.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/checkpoint_e_predecessor_equivalence.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/collect_phase11_evidence.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/collect_phase12_evidence.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/normalize_sdist.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/smoke_phase10_qt.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/smoke_phase11_qt.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/smoke_pycforge_workspace_0_12_2.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/validate_checkpoint_e.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/validate_phase0.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/validate_phase1.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/validate_phase10.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/validate_phase10_opening.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/validate_phase11.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/validate_phase12.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/validate_phase13.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/validate_phase14.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/validate_phase14b.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/validate_phase14c.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/validate_phase14d.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/validate_phase15a.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/validate_phase15b.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/validate_phase15c.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/validate_phase2.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/validate_phase3.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/validate_phase4.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/validate_phase5.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/validate_phase6.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/validate_phase7.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/validate_phase8.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/validate_phase9.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/validate_pycforge_workspace_0_12_1.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/validate_pycforge_workspace_0_12_2.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/validate_ting_agents.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/validate_workspace_usability_0_15_3.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/tools/verify_pypi_readme.py +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/checkpoint_e/architecture_and_workspace_decision.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/checkpoint_e/breadth_and_change_budgets.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/checkpoint_e/entry_criteria.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/checkpoint_e/feature_boundaries.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/checkpoint_e/feature_matrix_reconciliation.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/checkpoint_e/gate_evidence.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/checkpoint_e/manifest.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/checkpoint_e/opening_evidence.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/checkpoint_e/performance_budgets.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/checkpoint_e/release_fingerprint.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/checkpoint_e/rollback_conditions.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_0/baseline_fingerprint.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_0/first_milestone_contract.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_0/manifest.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_0/non_goals_by_phase.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_1/baseline_fingerprint.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_1/empty_pipeline_invariants.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_1/facade_contract.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_1/manifest.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_10/baseline_fingerprint.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_10/entry_criteria.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_10/entry_gate.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_10/gate_evidence.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_10/helper_feasibility_decisions.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_10/manifest.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_10/opening_checkpoint_fingerprint.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_10/opening_checkpoint_manifest.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_10/rollback_conditions.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_11/baseline_fingerprint.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_11/container_representation_decisions.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_11/entry_criteria.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_11/gate_evidence.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_11/manifest.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_11/rollback_conditions.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_12/baseline_fingerprint.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_12/entry_criteria.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_12/gate_evidence.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_12/manifest.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_12/module_bundle_decisions.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_12/rollback_conditions.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_13/baseline_fingerprint.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_13/candidate_reseed.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_13/entry_criteria.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_13/gate_evidence.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_13/manifest.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_13/record_representation_decisions.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_13/release_fingerprint.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_13/rollback_conditions.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_14/baseline_fingerprint.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_14/breadth_and_change_budgets.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_14/entry_criteria.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_14/gate_evidence.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_14/integer_divmod_decision.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_14/manifest.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_14/opening_evidence.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_14/release_fingerprint.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_14/rollback_conditions.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_14b/baseline_fingerprint.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_14b/breadth_and_change_budgets.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_14b/conditional_temporary_regions_decision.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_14b/entry_criteria.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_14b/gate_evidence.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_14b/manifest.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_14b/opening_evidence.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_14b/release_fingerprint.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_14b/rollback_conditions.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_14c/baseline_fingerprint.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_14c/breadth_and_change_budgets.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_14c/direct_keyword_calls_decision.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_14c/entry_criteria.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_14c/gate_evidence.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_14c/manifest.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_14c/opening_evidence.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_14c/release_fingerprint.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_14c/rollback_conditions.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_14d/baseline_fingerprint.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_14d/breadth_and_change_budgets.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_14d/entry_criteria.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_14d/gate_evidence.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_14d/manifest.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_14d/opening_evidence.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_14d/release_fingerprint.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_14d/required_keyword_only_calls_decision.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_14d/rollback_conditions.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_15a/entry_criteria.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_15a/gate_evidence.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_15a/manifest.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_15a/release_fingerprint.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_15a/responsiveness_and_isolation_decision.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_15a/rollback_conditions.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_15b/application_shell_decision.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_15b/entry_criteria.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_15b/gate_evidence.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_15b/manifest.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_15b/release_fingerprint.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_15b/rollback_conditions.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_15c/entry_criteria.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_15c/gate_evidence.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_15c/manifest.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_15c/release_fingerprint.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_15c/rollback_conditions.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_15c/workspace_completeness_decision.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_2/baseline_fingerprint.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_2/checkpoint_a.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_2/laboratory_contract.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_2/manifest.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_3/baseline_fingerprint.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_3/gate_evidence.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_3/manifest.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_4/baseline_fingerprint.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_4/gate_evidence.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_4/manifest.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_5/baseline_fingerprint.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_5/entry_criteria.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_5/gate_evidence.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_5/manifest.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_6/baseline_fingerprint.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_6/checkpoint_b.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_6/entry_criteria.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_6/gate_evidence.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_6/manifest.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_7/baseline_fingerprint.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_7/entry_criteria.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_7/gate_evidence.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_7/manifest.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_7/rollback_conditions.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_8/baseline_fingerprint.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_8/entry_criteria.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_8/gate_evidence.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_8/manifest.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_8/rollback_conditions.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_9/baseline_fingerprint.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_9/entry_criteria.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_9/gate_evidence.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_9/manifest.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_9/rollback_conditions.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_minus_1/feasibility_decisions.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/phase_minus_1/risk_register.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/workspace_hardening_0_12_1/README.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/workspace_hardening_0_12_1/manifest.json +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/workspace_hardening_0_12_2/README.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/workspace_hardening_0_12_2/gate_evidence.md +0 -0
- {pycforge-1.0.2 → pycforge-1.0.4}/transition/workspace_hardening_0_12_2/manifest.json +0 -0
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.0.4 — PyPI publication refresh
|
|
4
|
+
|
|
5
|
+
Reissued the fully validated 1.0.3 package under a fresh public version for a
|
|
6
|
+
clean PyPI upload. The two README screenshots retain their fixed, versioned
|
|
7
|
+
Cloudinary PNG delivery URLs.
|
|
8
|
+
|
|
9
|
+
Advanced the package and application version to 1.0.4. Converter behavior,
|
|
10
|
+
generated C, Ting agents and authority, the notification correction, workspace
|
|
11
|
+
behavior, and all UI and dialog presentation remain unchanged from 1.0.3.
|
|
12
|
+
|
|
13
|
+
## 1.0.3 — Reliable PyPI screenshot delivery
|
|
14
|
+
|
|
15
|
+
Replaced the two unreliable public README image addresses with fixed,
|
|
16
|
+
versioned Cloudinary PNG delivery URLs. Both remote objects were independently
|
|
17
|
+
retrieved as 1920 × 1080 PNG files and matched the packaged screenshots byte
|
|
18
|
+
for byte before the release was built.
|
|
19
|
+
|
|
20
|
+
Advanced the package and application version to 1.0.3. The converter, generated
|
|
21
|
+
C, Ting agents and authority, notification fix, workspace, and every other UI
|
|
22
|
+
or dialog behavior remain unchanged from 1.0.2.
|
|
23
|
+
|
|
3
24
|
## 1.0.2 — Focused presentation and notification polish
|
|
4
25
|
|
|
5
26
|
Replaced the former release-contract-heavy README with a shorter public guide
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# PyCForge Current Contract Index
|
|
2
2
|
|
|
3
|
-
Current candidate: `1.0.
|
|
3
|
+
Current candidate: `1.0.4` / PyPI Publication Refresh
|
|
4
4
|
Release state: locally validated PyPI candidate; upload pending
|
|
5
5
|
Validation: 1,266 tests passed, 19 expected predecessor-custody checks skipped,
|
|
6
6
|
34 Ting rulepack tests passed, and wheel/source clean-install checks passed
|
|
@@ -20,7 +20,7 @@ and exposes no compiler, assembler, linker, loader, runner, debugger, terminal,
|
|
|
20
20
|
toolchain, plugin, project explorer, external-command surface, or generated-C
|
|
21
21
|
editor. Generated C remains read-only and explicit-save-only.
|
|
22
22
|
|
|
23
|
-
The 1.0.
|
|
23
|
+
The 1.0.4 package retains the 1.0.1 fixed function-local numeric and Boolean
|
|
24
24
|
set profile with
|
|
25
25
|
once-evaluated bounded `in`/`not in` membership. It also adds authenticated
|
|
26
26
|
membership facts and 1.0.1 rules, Python-only function folding and subtle
|
|
@@ -106,7 +106,7 @@ below own the active successor boundary.
|
|
|
106
106
|
## Release lineage and custody
|
|
107
107
|
|
|
108
108
|
Phase 16 `0.16.0` is implemented, validated, promoted, and sealed.
|
|
109
|
-
PyCForge 1.0.
|
|
109
|
+
PyCForge 1.0.4 retains those base schemas, renderer, and individually versioned
|
|
110
110
|
1.0.1 set rules while refining public presentation and notification behavior.
|
|
111
111
|
PyCForge 0.16.3 added installed Help
|
|
112
112
|
and workspace usability; 0.16.2 repaired the virtual-EOF
|
|
@@ -135,7 +135,7 @@ party separately builds and runs the generated C outside PyCForge.
|
|
|
135
135
|
|
|
136
136
|
| Surface | Active identity | Authority |
|
|
137
137
|
|---|---|---|
|
|
138
|
-
| package | `1.0.
|
|
138
|
+
| package | `1.0.4` | `pyproject.toml` |
|
|
139
139
|
| converter contract | `0.16.0` | `pycforge/converter/contracts/versions.py` |
|
|
140
140
|
| rule set | `phase16-scope-loop-file-v0.16.0` | `pycforge/converter/contracts/configuration.py` |
|
|
141
141
|
| set rules | `pycforge101.container.set_literal@1.0.1`; `pycforge101.container.set_membership@1.0.1` | `pycforge/converter/analysis/planning.py` |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pycforge
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.4
|
|
4
4
|
Summary: Deterministic bounded Python-to-C source transpiler
|
|
5
5
|
License-Expression: GPL-3.0-only
|
|
6
6
|
Project-URL: Homepage, https://pypi.org/project/pycforge/
|
|
@@ -32,7 +32,7 @@ workspace, command-line tools, and a Python API. It converts its documented,
|
|
|
32
32
|
typed Python subset into readable C11 source. Unsupported input is rejected
|
|
33
33
|
with clear diagnostics instead of being guessed or silently changed.
|
|
34
34
|
|
|
35
|
-

|
|
36
36
|
|
|
37
37
|
## Install, upgrade, and open
|
|
38
38
|
|
|
@@ -115,7 +115,7 @@ Ting currently operates in **shadow evaluation** mode. Its feedback can help
|
|
|
115
115
|
review a conversion, but it never changes, approves, blocks, or publishes the
|
|
116
116
|
generated C.
|
|
117
117
|
|
|
118
|
-

|
|
119
119
|
|
|
120
120
|
## Built-in help and documentation
|
|
121
121
|
|
|
@@ -175,12 +175,14 @@ that Python, and it does not compile, link, load, or run the generated C. Review
|
|
|
175
175
|
the built-in **Safety and limits** page before using generated code in another
|
|
176
176
|
build system.
|
|
177
177
|
|
|
178
|
-
## PyCForge 1.0.
|
|
178
|
+
## PyCForge 1.0.4
|
|
179
179
|
|
|
180
|
-
Version 1.0.
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
180
|
+
Version 1.0.4 carries forward the reviewed 1.0.3 interface and documentation,
|
|
181
|
+
including both fixed, versioned PNG delivery URLs. This is a packaging-only
|
|
182
|
+
release; converter behavior, generated C, Ting agents, and the UI are unchanged.
|
|
183
|
+
Version 1.0.2 made the close control in the top notification banner follow the
|
|
184
|
+
notification's information, success, warning, or error color while leaving the
|
|
185
|
+
rest of the reviewed interface unchanged.
|
|
184
186
|
|
|
185
187
|
## License
|
|
186
188
|
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
# PyCForge 1.0.
|
|
1
|
+
# PyCForge 1.0.4 PyPI Release Procedure
|
|
2
2
|
|
|
3
3
|
This procedure is intentionally PyPI-only. It assumes the candidate is a local
|
|
4
4
|
source archive and does not require a source-hosting service.
|
|
5
5
|
|
|
6
6
|
## Upload the validated files from iSH on iPhone
|
|
7
7
|
|
|
8
|
-
Place only `pycforge-1.0.
|
|
9
|
-
`pycforge-1.0.
|
|
8
|
+
Place only `pycforge-1.0.4-py3-none-any.whl` and
|
|
9
|
+
`pycforge-1.0.4.tar.gz` in the iSH upload directory. Then run:
|
|
10
10
|
|
|
11
11
|
```sh
|
|
12
12
|
python3 -m pip install --upgrade twine
|
|
13
|
-
python3 -m twine check pycforge-1.0.
|
|
14
|
-
python3 -m twine upload pycforge-1.0.
|
|
13
|
+
python3 -m twine check pycforge-1.0.4-py3-none-any.whl pycforge-1.0.4.tar.gz
|
|
14
|
+
python3 -m twine upload pycforge-1.0.4-py3-none-any.whl pycforge-1.0.4.tar.gz
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
At the prompts, use `__token__` as the username and the complete PyPI API token
|
|
@@ -23,7 +23,7 @@ README, checksum file, or shell history.
|
|
|
23
23
|
|
|
24
24
|
1. Install 64-bit CPython 3.12 from python.org and enable the Python Launcher.
|
|
25
25
|
2. Open PowerShell in the folder containing the separately supplied
|
|
26
|
-
`pycforge-1.0.
|
|
26
|
+
`pycforge-1.0.4-py3-none-any.whl` and `pycforge-1.0.4.tar.gz` files. The
|
|
27
27
|
source archive does not contain the wheel.
|
|
28
28
|
3. Confirm which interpreter will be used:
|
|
29
29
|
|
|
@@ -35,11 +35,11 @@ README, checksum file, or shell history.
|
|
|
35
35
|
4. Record both hashes before installation:
|
|
36
36
|
|
|
37
37
|
```powershell
|
|
38
|
-
Get-FileHash .\pycforge-1.0.
|
|
39
|
-
Get-FileHash .\pycforge-1.0.
|
|
38
|
+
Get-FileHash .\pycforge-1.0.4-py3-none-any.whl -Algorithm SHA256
|
|
39
|
+
Get-FileHash .\pycforge-1.0.4.tar.gz -Algorithm SHA256
|
|
40
40
|
```
|
|
41
41
|
|
|
42
|
-
Record the exact 1.0.
|
|
42
|
+
Record the exact 1.0.4 candidate checksum in the final review. It must match
|
|
43
43
|
the archive selected for installation and any later authorized upload.
|
|
44
44
|
|
|
45
45
|
5. Create a dedicated environment and install the wheel. This avoids a source
|
|
@@ -48,7 +48,7 @@ README, checksum file, or shell history.
|
|
|
48
48
|
```powershell
|
|
49
49
|
py -3.12 -m venv .venv
|
|
50
50
|
.\.venv\Scripts\python.exe -m pip install --upgrade pip
|
|
51
|
-
.\.venv\Scripts\python.exe -m pip install --no-cache-dir .\pycforge-1.0.
|
|
51
|
+
.\.venv\Scripts\python.exe -m pip install --no-cache-dir .\pycforge-1.0.4-py3-none-any.whl
|
|
52
52
|
```
|
|
53
53
|
|
|
54
54
|
6. Verify the installed package and both entry points:
|
|
@@ -60,7 +60,7 @@ README, checksum file, or shell history.
|
|
|
60
60
|
.\.venv\Scripts\python.exe -m pycforge.ide
|
|
61
61
|
```
|
|
62
62
|
|
|
63
|
-
The version command must print `1.0.
|
|
63
|
+
The version command must print `1.0.4`. In the desktop application, press
|
|
64
64
|
F1 and confirm that the classified Help dialog opens without a browser.
|
|
65
65
|
|
|
66
66
|
If PowerShell blocks script files, the commands above still work because they
|
|
@@ -78,8 +78,8 @@ the exact build backend and runtime dependency wheels locally, then use
|
|
|
78
78
|
Extract into a new directory, preserving the original archive:
|
|
79
79
|
|
|
80
80
|
```powershell
|
|
81
|
-
tar -xf .\pycforge-1.0.
|
|
82
|
-
Set-Location .\pycforge-1.0.
|
|
81
|
+
tar -xf .\pycforge-1.0.4.tar.gz
|
|
82
|
+
Set-Location .\pycforge-1.0.4
|
|
83
83
|
py -3.12 -m venv .venv-review
|
|
84
84
|
.\.venv-review\Scripts\python.exe -m pip install --upgrade pip
|
|
85
85
|
.\.venv-review\Scripts\python.exe -m pip install -e .
|
|
@@ -207,7 +207,7 @@ frozen converter.
|
|
|
207
207
|
Never reuse a populated release directory.
|
|
208
208
|
|
|
209
209
|
```powershell
|
|
210
|
-
$ReleaseDir = Join-Path $PWD "dist-candidate-1.0.
|
|
210
|
+
$ReleaseDir = Join-Path $PWD "dist-candidate-1.0.4"
|
|
211
211
|
if (Test-Path $ReleaseDir) { throw "Release directory already exists: $ReleaseDir" }
|
|
212
212
|
New-Item -ItemType Directory -Path $ReleaseDir | Out-Null
|
|
213
213
|
.\.venv-review\Scripts\python.exe -m build --sdist --wheel --outdir $ReleaseDir
|
|
@@ -216,7 +216,7 @@ New-Item -ItemType Directory -Path $ReleaseDir | Out-Null
|
|
|
216
216
|
Get-FileHash "$ReleaseDir\*" -Algorithm SHA256
|
|
217
217
|
```
|
|
218
218
|
|
|
219
|
-
The verifier requires exactly one 1.0.
|
|
219
|
+
The verifier requires exactly one 1.0.4 wheel and one 1.0.4 source archive,
|
|
220
220
|
exact metadata and entry points, byte-identical package payloads, all Help and
|
|
221
221
|
icon resources, and the complete review-support source inventory. Inspect the
|
|
222
222
|
source archive and confirm that every source-tree test module is present.
|
|
@@ -229,7 +229,7 @@ than the working tree:
|
|
|
229
229
|
```powershell
|
|
230
230
|
py -3.12 -m venv .venv-artifact
|
|
231
231
|
.\.venv-artifact\Scripts\python.exe -m pip install --upgrade pip
|
|
232
|
-
.\.venv-artifact\Scripts\python.exe -m pip install --no-cache-dir "$ReleaseDir\pycforge-1.0.
|
|
232
|
+
.\.venv-artifact\Scripts\python.exe -m pip install --no-cache-dir "$ReleaseDir\pycforge-1.0.4.tar.gz"
|
|
233
233
|
.\.venv-artifact\Scripts\python.exe -c "import pycforge; print(pycforge.__version__)"
|
|
234
234
|
.\.venv-artifact\Scripts\pycforge.exe --help
|
|
235
235
|
.\.venv-artifact\Scripts\pycforge-workspace.exe
|
|
@@ -9,7 +9,7 @@ workspace, command-line tools, and a Python API. It converts its documented,
|
|
|
9
9
|
typed Python subset into readable C11 source. Unsupported input is rejected
|
|
10
10
|
with clear diagnostics instead of being guessed or silently changed.
|
|
11
11
|
|
|
12
|
-

|
|
13
13
|
|
|
14
14
|
## Install, upgrade, and open
|
|
15
15
|
|
|
@@ -92,7 +92,7 @@ Ting currently operates in **shadow evaluation** mode. Its feedback can help
|
|
|
92
92
|
review a conversion, but it never changes, approves, blocks, or publishes the
|
|
93
93
|
generated C.
|
|
94
94
|
|
|
95
|
-

|
|
96
96
|
|
|
97
97
|
## Built-in help and documentation
|
|
98
98
|
|
|
@@ -152,12 +152,14 @@ that Python, and it does not compile, link, load, or run the generated C. Review
|
|
|
152
152
|
the built-in **Safety and limits** page before using generated code in another
|
|
153
153
|
build system.
|
|
154
154
|
|
|
155
|
-
## PyCForge 1.0.
|
|
155
|
+
## PyCForge 1.0.4
|
|
156
156
|
|
|
157
|
-
Version 1.0.
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
157
|
+
Version 1.0.4 carries forward the reviewed 1.0.3 interface and documentation,
|
|
158
|
+
including both fixed, versioned PNG delivery URLs. This is a packaging-only
|
|
159
|
+
release; converter behavior, generated C, Ting agents, and the UI are unchanged.
|
|
160
|
+
Version 1.0.2 made the close control in the top notification banner follow the
|
|
161
|
+
notification's information, success, warning, or error color while leaving the
|
|
162
|
+
rest of the reviewed interface unchanged.
|
|
161
163
|
|
|
162
164
|
## License
|
|
163
165
|
|
|
@@ -1,4 +1,29 @@
|
|
|
1
|
-
# PyCForge 1.0.
|
|
1
|
+
# PyCForge 1.0.4
|
|
2
|
+
|
|
3
|
+
Release: PyCForge 1.0.4.
|
|
4
|
+
|
|
5
|
+
PyCForge 1.0.4 reissues the fully validated 1.0.3 package under a fresh public
|
|
6
|
+
version for a clean PyPI upload. It retains both fixed, versioned Cloudinary
|
|
7
|
+
PNG screenshot URLs.
|
|
8
|
+
|
|
9
|
+
The package and application version advance to 1.0.4. Converter semantics,
|
|
10
|
+
generated C, Ting behavior and authority, workspace behavior, notification
|
|
11
|
+
behavior, and every other interface or dialog remain unchanged.
|
|
12
|
+
|
|
13
|
+
## Historical 1.0.3 release notes
|
|
14
|
+
|
|
15
|
+
Release: PyCForge 1.0.3.
|
|
16
|
+
|
|
17
|
+
PyCForge 1.0.3 is a public screenshot-delivery correction. It replaces the two
|
|
18
|
+
unreliable README image addresses with fixed, versioned Cloudinary PNG URLs.
|
|
19
|
+
Both remote objects were retrieved independently as 1920 × 1080 PNG files and
|
|
20
|
+
matched the packaged screenshots byte for byte before the release was built.
|
|
21
|
+
|
|
22
|
+
The package and application version advance to 1.0.3. Converter semantics,
|
|
23
|
+
generated C, Ting behavior and authority, workspace behavior, the 1.0.2
|
|
24
|
+
notification correction, and every other interface or dialog remain unchanged.
|
|
25
|
+
|
|
26
|
+
## Historical 1.0.2 release notes
|
|
2
27
|
|
|
3
28
|
Release: PyCForge 1.0.2.
|
|
4
29
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "1.0.4"
|
|
@@ -38,7 +38,7 @@ validation, rendering, and conformance checks.</p>
|
|
|
38
38
|
if it is not in the current PowerShell directory.</p>
|
|
39
39
|
<pre>py -3.12 -m venv .venv
|
|
40
40
|
.\.venv\Scripts\python.exe -m pip install --upgrade pip
|
|
41
|
-
.\.venv\Scripts\python.exe -m pip install .\pycforge-1.0.
|
|
41
|
+
.\.venv\Scripts\python.exe -m pip install .\pycforge-1.0.4.tar.gz
|
|
42
42
|
.\.venv\Scripts\python.exe -m pycforge.ide</pre>
|
|
43
43
|
<p>Verify the command surface and installed version:</p>
|
|
44
44
|
<pre>.\.venv\Scripts\python.exe -c "import pycforge; print(pycforge.__version__)"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pycforge
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.4
|
|
4
4
|
Summary: Deterministic bounded Python-to-C source transpiler
|
|
5
5
|
License-Expression: GPL-3.0-only
|
|
6
6
|
Project-URL: Homepage, https://pypi.org/project/pycforge/
|
|
@@ -32,7 +32,7 @@ workspace, command-line tools, and a Python API. It converts its documented,
|
|
|
32
32
|
typed Python subset into readable C11 source. Unsupported input is rejected
|
|
33
33
|
with clear diagnostics instead of being guessed or silently changed.
|
|
34
34
|
|
|
35
|
-

|
|
36
36
|
|
|
37
37
|
## Install, upgrade, and open
|
|
38
38
|
|
|
@@ -115,7 +115,7 @@ Ting currently operates in **shadow evaluation** mode. Its feedback can help
|
|
|
115
115
|
review a conversion, but it never changes, approves, blocks, or publishes the
|
|
116
116
|
generated C.
|
|
117
117
|
|
|
118
|
-

|
|
119
119
|
|
|
120
120
|
## Built-in help and documentation
|
|
121
121
|
|
|
@@ -175,12 +175,14 @@ that Python, and it does not compile, link, load, or run the generated C. Review
|
|
|
175
175
|
the built-in **Safety and limits** page before using generated code in another
|
|
176
176
|
build system.
|
|
177
177
|
|
|
178
|
-
## PyCForge 1.0.
|
|
178
|
+
## PyCForge 1.0.4
|
|
179
179
|
|
|
180
|
-
Version 1.0.
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
180
|
+
Version 1.0.4 carries forward the reviewed 1.0.3 interface and documentation,
|
|
181
|
+
including both fixed, versioned PNG delivery URLs. This is a packaging-only
|
|
182
|
+
release; converter behavior, generated C, Ting agents, and the UI are unchanged.
|
|
183
|
+
Version 1.0.2 made the close control in the top notification banner follow the
|
|
184
|
+
notification's information, success, warning, or error color while leaving the
|
|
185
|
+
rest of the reviewed interface unchanged.
|
|
184
186
|
|
|
185
187
|
## License
|
|
186
188
|
|
|
@@ -36,7 +36,7 @@ def run() -> int:
|
|
|
36
36
|
|
|
37
37
|
class CheckpointEVersioningTests(unittest.TestCase):
|
|
38
38
|
def test_phase16_advances_while_explicit_phase14d_output_stays_frozen(self) -> None:
|
|
39
|
-
self.assertEqual(__version__, "1.0.
|
|
39
|
+
self.assertEqual(__version__, "1.0.4")
|
|
40
40
|
self.assertEqual(CONVERTER_CONTRACT_VERSION, "0.16.0")
|
|
41
41
|
self.assertEqual(WORKSPACE_CONTRACT_VERSION, "pycforge-workspace/0.7")
|
|
42
42
|
|
|
@@ -63,8 +63,8 @@ ROOT = Path(__file__).resolve().parents[1]
|
|
|
63
63
|
|
|
64
64
|
class ReleaseMetadataAndPhase122CustodyTests(unittest.TestCase):
|
|
65
65
|
def test_active_package_and_converter_are_phase16_while_workspace_stays_phase15c(self) -> None:
|
|
66
|
-
self.assertEqual(__version__, "1.0.
|
|
67
|
-
self.assertIn('version = "1.0.
|
|
66
|
+
self.assertEqual(__version__, "1.0.4")
|
|
67
|
+
self.assertIn('version = "1.0.4"', (ROOT / "pyproject.toml").read_text())
|
|
68
68
|
self.assertEqual(CONVERTER_CONTRACT_VERSION, "0.16.0")
|
|
69
69
|
self.assertEqual(WORKSPACE_CONTRACT_VERSION, "pycforge-workspace/0.7")
|
|
70
70
|
|
|
@@ -74,7 +74,7 @@ class ReleaseMetadataAndPhase122CustodyTests(unittest.TestCase):
|
|
|
74
74
|
"pycforge-workspace/0.6",
|
|
75
75
|
)
|
|
76
76
|
workspace_state = (ROOT / "CURRENT_STATE.md").read_text(encoding="utf-8")
|
|
77
|
-
self.assertIn("Current candidate: `1.0.
|
|
77
|
+
self.assertIn("Current candidate: `1.0.4`", workspace_state)
|
|
78
78
|
self.assertIn("PySide6", workspace_state)
|
|
79
79
|
|
|
80
80
|
self.assertTrue((ROOT / "specifications/static_records.md").is_file())
|
|
@@ -45,7 +45,7 @@ class Phase13ContractTests(unittest.TestCase):
|
|
|
45
45
|
def test_active_phase16_identities_are_explicit_and_record_contracts_stay_frozen(self) -> None:
|
|
46
46
|
request = ConversionRequest.from_source("def run() -> int:\n return 1\n")
|
|
47
47
|
|
|
48
|
-
self.assertEqual(__version__, "1.0.
|
|
48
|
+
self.assertEqual(__version__, "1.0.4")
|
|
49
49
|
self.assertEqual(
|
|
50
50
|
request.rule_set_version,
|
|
51
51
|
"phase16-scope-loop-file-v0.16.0",
|
|
@@ -42,7 +42,7 @@ class Phase14NumericContractTests(unittest.TestCase):
|
|
|
42
42
|
def test_active_phase16_identities_are_explicit_and_additive(self) -> None:
|
|
43
43
|
request = ConversionRequest.from_source("def run() -> int:\n return 1\n")
|
|
44
44
|
|
|
45
|
-
self.assertEqual(__version__, "1.0.
|
|
45
|
+
self.assertEqual(__version__, "1.0.4")
|
|
46
46
|
self.assertEqual(
|
|
47
47
|
request.rule_set_version,
|
|
48
48
|
"phase16-scope-loop-file-v0.16.0",
|
|
@@ -74,7 +74,7 @@ class Phase14BConditionalContractTests(unittest.TestCase):
|
|
|
74
74
|
def test_active_phase16_identities_are_exact_and_additive(self) -> None:
|
|
75
75
|
request = ConversionRequest.from_source("def run() -> int:\n return 1\n")
|
|
76
76
|
|
|
77
|
-
self.assertEqual(__version__, "1.0.
|
|
77
|
+
self.assertEqual(__version__, "1.0.4")
|
|
78
78
|
self.assertEqual(
|
|
79
79
|
DEFAULT_RULE_SET,
|
|
80
80
|
"phase16-scope-loop-file-v0.16.0",
|
|
@@ -78,7 +78,7 @@ class Phase14CKeywordContractTests(unittest.TestCase):
|
|
|
78
78
|
def test_active_phase16_identities_are_exact_and_cumulative(self) -> None:
|
|
79
79
|
request = ConversionRequest.from_source("def run() -> int:\n return 1\n")
|
|
80
80
|
|
|
81
|
-
self.assertEqual(__version__, "1.0.
|
|
81
|
+
self.assertEqual(__version__, "1.0.4")
|
|
82
82
|
self.assertEqual(
|
|
83
83
|
DEFAULT_RULE_SET,
|
|
84
84
|
"phase16-scope-loop-file-v0.16.0",
|
|
@@ -111,7 +111,7 @@ class Phase14DKeywordOnlyContractTests(unittest.TestCase):
|
|
|
111
111
|
def test_active_identities_are_exact_and_cumulative(self) -> None:
|
|
112
112
|
request = ConversionRequest.from_source("def run() -> int:\n return 1\n")
|
|
113
113
|
|
|
114
|
-
self.assertEqual(__version__, "1.0.
|
|
114
|
+
self.assertEqual(__version__, "1.0.4")
|
|
115
115
|
self.assertEqual(
|
|
116
116
|
DEFAULT_RULE_SET,
|
|
117
117
|
"phase16-scope-loop-file-v0.16.0",
|
|
@@ -55,8 +55,8 @@ class Phase15AMetadataTests(unittest.TestCase):
|
|
|
55
55
|
project = tomllib.loads(
|
|
56
56
|
(ROOT / "pyproject.toml").read_text(encoding="utf-8")
|
|
57
57
|
)
|
|
58
|
-
self.assertEqual(project["project"]["version"], "1.0.
|
|
59
|
-
self.assertEqual(__version__, "1.0.
|
|
58
|
+
self.assertEqual(project["project"]["version"], "1.0.4")
|
|
59
|
+
self.assertEqual(__version__, "1.0.4")
|
|
60
60
|
self.assertEqual(CONVERTER_CONTRACT_VERSION, "0.16.0")
|
|
61
61
|
self.assertEqual(WORKSPACE_CONTRACT_VERSION, "pycforge-workspace/0.7")
|
|
62
62
|
self.assertEqual(PROTOCOL_SCHEMA, "pycforge.worker-protocol/0.2")
|
|
@@ -24,11 +24,11 @@ from tools.verify_public_distribution import ( # noqa: E402
|
|
|
24
24
|
ROOT = Path(__file__).resolve().parents[1]
|
|
25
25
|
|
|
26
26
|
|
|
27
|
-
class
|
|
27
|
+
class Release104PresentationTests(unittest.TestCase):
|
|
28
28
|
@classmethod
|
|
29
29
|
def setUpClass(cls) -> None:
|
|
30
30
|
cls.app = QApplication.instance() or QApplication(
|
|
31
|
-
["pycforge-release-1.0.
|
|
31
|
+
["pycforge-release-1.0.4-presentation"]
|
|
32
32
|
)
|
|
33
33
|
apply_pycforge_theme(cls.app)
|
|
34
34
|
|
|
@@ -46,6 +46,11 @@ class Release102PresentationTests(unittest.TestCase):
|
|
|
46
46
|
self.assertIn(text, readme)
|
|
47
47
|
for screenshot_url in EXPECTED_SCREENSHOT_URLS:
|
|
48
48
|
self.assertEqual(readme.count(screenshot_url), 1)
|
|
49
|
+
self.assertTrue(screenshot_url.startswith("https://res.cloudinary.com/"))
|
|
50
|
+
self.assertIn("/image/upload/v", screenshot_url)
|
|
51
|
+
self.assertTrue(screenshot_url.endswith(".png"))
|
|
52
|
+
self.assertNotIn("f_auto", screenshot_url)
|
|
53
|
+
self.assertNotIn("q_auto", screenshot_url)
|
|
49
54
|
|
|
50
55
|
def test_readme_screenshots_are_lossless_and_below_one_megabyte(self) -> None:
|
|
51
56
|
for relative in EXPECTED_SCREENSHOTS:
|
|
@@ -51,7 +51,7 @@ ROOT = Path(__file__).resolve().parents[1]
|
|
|
51
51
|
|
|
52
52
|
class ReleaseContract0163Tests(unittest.TestCase):
|
|
53
53
|
def test_package_advances_only_workspace_contracts(self) -> None:
|
|
54
|
-
self.assertEqual(__version__, "1.0.
|
|
54
|
+
self.assertEqual(__version__, "1.0.4")
|
|
55
55
|
self.assertEqual(CONVERTER_CONTRACT_VERSION, "0.16.0")
|
|
56
56
|
self.assertEqual(DEFAULT_RULE_SET, "phase16-scope-loop-file-v0.16.0")
|
|
57
57
|
self.assertEqual(DEFAULT_RENDERER, "c-renderer-v0.16.0")
|
|
@@ -104,7 +104,7 @@ class ReleaseContract0163Tests(unittest.TestCase):
|
|
|
104
104
|
project = tomllib.loads(
|
|
105
105
|
(ROOT / "pyproject.toml").read_text(encoding="utf-8")
|
|
106
106
|
)["project"]
|
|
107
|
-
self.assertEqual(project["version"], "1.0.
|
|
107
|
+
self.assertEqual(project["version"], "1.0.4")
|
|
108
108
|
urls = project["urls"]
|
|
109
109
|
self.assertTrue(urls)
|
|
110
110
|
self.assertTrue(
|
|
@@ -52,8 +52,8 @@ class SetConversion101Tests(unittest.TestCase):
|
|
|
52
52
|
project = tomllib.loads(
|
|
53
53
|
(ROOT / "pyproject.toml").read_text(encoding="utf-8")
|
|
54
54
|
)
|
|
55
|
-
self.assertEqual(__version__, "1.0.
|
|
56
|
-
self.assertEqual(project["project"]["version"], "1.0.
|
|
55
|
+
self.assertEqual(__version__, "1.0.4")
|
|
56
|
+
self.assertEqual(project["project"]["version"], "1.0.4")
|
|
57
57
|
|
|
58
58
|
def test_integer_membership_is_a_bounded_const_array_search(self) -> None:
|
|
59
59
|
result = convert(
|
|
@@ -70,8 +70,8 @@ class CheckpointEValidatorTests(unittest.TestCase):
|
|
|
70
70
|
report = audit_checkpoint_metadata(ROOT)
|
|
71
71
|
|
|
72
72
|
self.assertFalse(report["passed"])
|
|
73
|
-
self.assertEqual(report["package_version"], "1.0.
|
|
74
|
-
self.assertEqual(report["project_version"], "1.0.
|
|
73
|
+
self.assertEqual(report["package_version"], "1.0.4")
|
|
74
|
+
self.assertEqual(report["project_version"], "1.0.4")
|
|
75
75
|
self.assertEqual(
|
|
76
76
|
report["converter_contract_version"],
|
|
77
77
|
"0.16.0",
|
|
@@ -212,7 +212,7 @@ class CheckpointEValidatorTests(unittest.TestCase):
|
|
|
212
212
|
self.assertTrue(report["sealed_predecessor"]["passed"])
|
|
213
213
|
metadata = report["metadata_roadmap_feature_matrix"]
|
|
214
214
|
self.assertFalse(metadata["passed"])
|
|
215
|
-
self.assertEqual(metadata["package_version"], "1.0.
|
|
215
|
+
self.assertEqual(metadata["package_version"], "1.0.4")
|
|
216
216
|
self.assertEqual(metadata["converter_contract_version"], "0.16.0")
|
|
217
217
|
self.assertEqual(
|
|
218
218
|
metadata["workspace_contract"],
|
|
@@ -27,7 +27,7 @@ class Phase16ReleaseValidatorTests(unittest.TestCase):
|
|
|
27
27
|
trace = validator.audit_decision_trace_schema()
|
|
28
28
|
|
|
29
29
|
self.assertTrue(identities["passed"], identities["errors"])
|
|
30
|
-
self.assertEqual(validator.EXPECTED_PACKAGE_VERSION, "1.0.
|
|
30
|
+
self.assertEqual(validator.EXPECTED_PACKAGE_VERSION, "1.0.4")
|
|
31
31
|
self.assertEqual(
|
|
32
32
|
identities["contracts"],
|
|
33
33
|
dict(validator.EXPECTED_ACTIVE_CONTRACTS),
|
|
@@ -167,8 +167,8 @@ class PyCForgeValidatorPureTests(unittest.TestCase):
|
|
|
167
167
|
def test_sealed_0122_validator_refuses_the_active_phase16_tree(self) -> None:
|
|
168
168
|
errors = validate_tree(ROOT, converter_smoke=False)
|
|
169
169
|
self.assertEqual(errors, validate_tree(ROOT, converter_smoke=False))
|
|
170
|
-
self.assertEqual(__version__, "1.0.
|
|
171
|
-
self.assertIn("imported version is '1.0.
|
|
170
|
+
self.assertEqual(__version__, "1.0.4")
|
|
171
|
+
self.assertIn("imported version is '1.0.4'", errors)
|
|
172
172
|
self.assertIn(
|
|
173
173
|
"frozen converter contracts: 'c_ir' is 'c-ir/0.16.0', expected 'c-ir/0.12'",
|
|
174
174
|
errors,
|
|
@@ -129,7 +129,7 @@ from tools import ( # noqa: E402
|
|
|
129
129
|
|
|
130
130
|
|
|
131
131
|
VALIDATION_SCHEMA = "pycforge.phase16-release-validation/0.16.0"
|
|
132
|
-
EXPECTED_PACKAGE_VERSION = "1.0.
|
|
132
|
+
EXPECTED_PACKAGE_VERSION = "1.0.4"
|
|
133
133
|
EXPECTED_PHASE16_HELPER_REGISTRY_SHA256 = (
|
|
134
134
|
"ce56481ecdc2c77a4732147dbe1f08b6b17736c87907e5c898e2c005fec85229"
|
|
135
135
|
)
|
|
@@ -151,7 +151,7 @@ EXPECTED_FILE_ASSET_SHA256 = {
|
|
|
151
151
|
),
|
|
152
152
|
}
|
|
153
153
|
EXPECTED_ACTIVE_CONTRACTS: Mapping[str, object] = {
|
|
154
|
-
"package": "1.0.
|
|
154
|
+
"package": "1.0.4",
|
|
155
155
|
"converter": "0.16.0",
|
|
156
156
|
"source_bundle": "source-bundle/0.2",
|
|
157
157
|
"python_ir": "python-ir/0.4",
|
|
@@ -36,9 +36,13 @@ EXPECTED_SCREENSHOT = Path("docs/images/pycforge-workspace-1.0.2.png")
|
|
|
36
36
|
EXPECTED_TING_SCREENSHOT = Path(
|
|
37
37
|
"docs/images/pycforge-ting-agents-1.0.2.png"
|
|
38
38
|
)
|
|
39
|
-
EXPECTED_SCREENSHOT_URL =
|
|
39
|
+
EXPECTED_SCREENSHOT_URL = (
|
|
40
|
+
"https://res.cloudinary.com/vppzdwxg/image/upload/"
|
|
41
|
+
"v1789348864/pcf_main.png"
|
|
42
|
+
)
|
|
40
43
|
EXPECTED_TING_SCREENSHOT_URL = (
|
|
41
|
-
"https://
|
|
44
|
+
"https://res.cloudinary.com/vppzdwxg/image/upload/"
|
|
45
|
+
"v1789349066/pcf_ting_agents.png"
|
|
42
46
|
)
|
|
43
47
|
EXPECTED_SCREENSHOTS = (EXPECTED_SCREENSHOT, EXPECTED_TING_SCREENSHOT)
|
|
44
48
|
EXPECTED_SCREENSHOT_URLS = (
|
|
@@ -155,6 +159,17 @@ def _verify_public_readme(payload: bytes) -> None:
|
|
|
155
159
|
raise DistributionVerificationError(
|
|
156
160
|
f"README.md is missing required release content: {missing}"
|
|
157
161
|
)
|
|
162
|
+
for url in EXPECTED_SCREENSHOT_URLS:
|
|
163
|
+
if not (
|
|
164
|
+
url.startswith("https://res.cloudinary.com/")
|
|
165
|
+
and "/image/upload/v" in url
|
|
166
|
+
and url.endswith(".png")
|
|
167
|
+
and "f_auto" not in url
|
|
168
|
+
and "q_auto" not in url
|
|
169
|
+
):
|
|
170
|
+
raise DistributionVerificationError(
|
|
171
|
+
f"README.md screenshot URL is not fixed and versioned: {url}"
|
|
172
|
+
)
|
|
158
173
|
for screenshot in EXPECTED_SCREENSHOTS:
|
|
159
174
|
asset = ROOT / screenshot
|
|
160
175
|
if not asset.is_file() or not asset.read_bytes().startswith(
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "1.0.2"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|