pycforge 0.16.2__tar.gz → 1.0.2__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.
Files changed (910) hide show
  1. pycforge-1.0.2/CHANGELOG.md +838 -0
  2. pycforge-1.0.2/CONVERSION_ROADMAP.md +232 -0
  3. pycforge-1.0.2/CURRENT_STATE.md +433 -0
  4. pycforge-1.0.2/EXPERT_REVIEW_1.0.1.md +487 -0
  5. pycforge-1.0.2/HELP.md +49 -0
  6. pycforge-1.0.2/MANIFEST.in +28 -0
  7. pycforge-1.0.2/PKG-INFO +188 -0
  8. pycforge-1.0.2/PYPI_RELEASE.md +254 -0
  9. pycforge-1.0.2/PyCForge_Checkpoint_E_v0_14_4_Project_Handoff.txt +221 -0
  10. pycforge-1.0.2/PyCForge_Phase_10_v0_10_0_Project_Handoff.txt +122 -0
  11. pycforge-1.0.2/PyCForge_Phase_11_v0_11_0_Project_Handoff.txt +155 -0
  12. pycforge-1.0.2/PyCForge_Phase_12_v0_12_0_Project_Handoff.txt +167 -0
  13. pycforge-1.0.2/PyCForge_Phase_13_v0_13_0_Project_Handoff.txt +152 -0
  14. pycforge-1.0.2/PyCForge_Phase_14A_v0_14_0_Project_Handoff.txt +159 -0
  15. pycforge-1.0.2/PyCForge_Phase_14B_v0_14_1_Project_Handoff.txt +211 -0
  16. pycforge-1.0.2/PyCForge_Phase_14C_v0_14_2_Project_Handoff.txt +270 -0
  17. pycforge-1.0.2/PyCForge_Phase_14D_v0_14_3_Project_Handoff.txt +358 -0
  18. pycforge-1.0.2/PyCForge_Phase_15A_v0_15_0_Project_Handoff.txt +207 -0
  19. pycforge-1.0.2/PyCForge_Phase_15B_v0_15_1_Project_Handoff.txt +178 -0
  20. pycforge-1.0.2/PyCForge_Phase_15C_v0_15_2_Project_Handoff.txt +240 -0
  21. pycforge-1.0.2/PyCForge_Phase_9_v0_9_0_Project_Handoff.txt +124 -0
  22. pycforge-1.0.2/README.md +165 -0
  23. pycforge-1.0.2/RELEASE_NOTES.md +444 -0
  24. pycforge-1.0.2/ROADMAP.md +15 -0
  25. pycforge-1.0.2/THIRD_PARTY_NOTICES.md +16 -0
  26. pycforge-1.0.2/TING_INTEGRATION_REVIEW.md +172 -0
  27. pycforge-1.0.2/docs/PyCForge_v0_15_2_Conversion_Examples_Reference_Edition.pdf +1559 -0
  28. pycforge-1.0.2/docs/PyCForge_v0_16_0_Programmers_Conversion_Guide.pdf +1157 -1
  29. pycforge-1.0.2/docs/images/pycforge-help-0.16.3.png +0 -0
  30. pycforge-1.0.2/docs/images/pycforge-ting-agents-1.0.2.png +0 -0
  31. pycforge-1.0.2/docs/images/pycforge-workspace-0.15.2.png +0 -0
  32. pycforge-1.0.2/docs/images/pycforge-workspace-0.16.1.png +0 -0
  33. pycforge-1.0.2/docs/images/pycforge-workspace-0.16.3.png +0 -0
  34. pycforge-1.0.2/docs/images/pycforge-workspace-1.0.2.png +0 -0
  35. pycforge-1.0.2/docs/pycforge_workspace_quality_addendum.md +161 -0
  36. pycforge-1.0.2/docs/python_to_c_converter_architecture_revision_3_1.txt +3470 -0
  37. pycforge-1.0.2/docs/python_to_c_converter_architecture_revision_3_2_addendum.md +82 -0
  38. pycforge-1.0.2/docs/python_to_c_converter_architecture_revision_3_3_workspace_addendum.md +74 -0
  39. pycforge-1.0.2/evidence/checkpoint_e/debt_delta.json +61 -0
  40. pycforge-1.0.2/evidence/checkpoint_e/entry_report.json +121 -0
  41. pycforge-1.0.2/evidence/checkpoint_e/full_subset_validation.json +3730 -0
  42. pycforge-1.0.2/evidence/checkpoint_e/release_report.json +234 -0
  43. pycforge-1.0.2/evidence/checkpoint_e/workspace_debt.json +128 -0
  44. pycforge-1.0.2/evidence/phase_02/architecture_report.json +6 -0
  45. pycforge-1.0.2/evidence/phase_02/artifact_manifest.json +19 -0
  46. pycforge-1.0.2/evidence/phase_02/debt_delta.json +7 -0
  47. pycforge-1.0.2/evidence/phase_02/decision_trace_sample.json +14 -0
  48. pycforge-1.0.2/evidence/phase_02/determinism_report.json +4 -0
  49. pycforge-1.0.2/evidence/phase_02/golden_manifest.json +4 -0
  50. pycforge-1.0.2/evidence/phase_02/resource_report.json +6 -0
  51. pycforge-1.0.2/evidence/phase_02/rule_manifest.json +5 -0
  52. pycforge-1.0.2/evidence/phase_02/semantics_report.json +5 -0
  53. pycforge-1.0.2/evidence/phase_02/test_summary.json +13 -0
  54. pycforge-1.0.2/evidence/phase_02/transition_packet.json +61 -0
  55. pycforge-1.0.2/evidence/phase_04/golden_manifest.json +1 -0
  56. pycforge-1.0.2/evidence/phase_06/architecture_report.json +1 -0
  57. pycforge-1.0.2/evidence/phase_06/conversion_debt.json +10 -0
  58. pycforge-1.0.2/evidence/phase_06/decision_trace_sample.json +6 -0
  59. pycforge-1.0.2/evidence/phase_06/determinism_report.json +1 -0
  60. pycforge-1.0.2/evidence/phase_06/first_slice_report.json +390 -0
  61. pycforge-1.0.2/evidence/phase_06/golden_manifest.json +13 -0
  62. pycforge-1.0.2/evidence/phase_06/rule_report.json +1 -0
  63. pycforge-1.0.2/evidence/phase_06/test_summary.json +15 -0
  64. pycforge-1.0.2/evidence/phase_06/transition_report.json +1 -0
  65. pycforge-1.0.2/evidence/phase_07/architecture_report.json +5 -0
  66. pycforge-1.0.2/evidence/phase_07/determinism_report.json +5 -0
  67. pycforge-1.0.2/evidence/phase_07/rule_report.json +58 -0
  68. pycforge-1.0.2/evidence/phase_07/transition_report.json +6 -0
  69. pycforge-1.0.2/evidence/phase_08/architecture_report.json +5 -0
  70. pycforge-1.0.2/evidence/phase_08/checkpoint_c.json +10 -0
  71. pycforge-1.0.2/evidence/phase_08/determinism_report.json +5 -0
  72. pycforge-1.0.2/evidence/phase_08/observer_cancellation_report.json +6 -0
  73. pycforge-1.0.2/evidence/phase_08/rule_report.json +122 -0
  74. pycforge-1.0.2/evidence/phase_08/test_summary.json +7 -0
  75. pycforge-1.0.2/evidence/phase_08/transition_report.json +1 -0
  76. pycforge-1.0.2/evidence/phase_09/architecture_report.json +13 -0
  77. pycforge-1.0.2/evidence/phase_09/conversion_debt.json +31 -0
  78. pycforge-1.0.2/evidence/phase_09/determinism_report.json +9 -0
  79. pycforge-1.0.2/evidence/phase_09/mapping_report.json +18 -0
  80. pycforge-1.0.2/evidence/phase_09/observer_cancellation_resource_report.json +21 -0
  81. pycforge-1.0.2/evidence/phase_09/phase9_report.json +27 -0
  82. pycforge-1.0.2/evidence/phase_09/python_package_report.json +16 -0
  83. pycforge-1.0.2/evidence/phase_09/review_report.json +45 -0
  84. pycforge-1.0.2/evidence/phase_09/rule_report.json +30 -0
  85. pycforge-1.0.2/evidence/phase_09/semantic_gate_report.json +16 -0
  86. pycforge-1.0.2/evidence/phase_09/test_summary.json +12 -0
  87. pycforge-1.0.2/evidence/phase_09/transition_report.json +9 -0
  88. pycforge-1.0.2/evidence/phase_10/architecture_report.json +5 -0
  89. pycforge-1.0.2/evidence/phase_10/determinism_report.json +5 -0
  90. pycforge-1.0.2/evidence/phase_10/helper_registry_report.json +38 -0
  91. pycforge-1.0.2/evidence/phase_10/opening_checkpoint_report.json +19 -0
  92. pycforge-1.0.2/evidence/phase_10/opening_package_report.json +16 -0
  93. pycforge-1.0.2/evidence/phase_10/opening_test_summary.json +11 -0
  94. pycforge-1.0.2/evidence/phase_10/package_report.json +22 -0
  95. pycforge-1.0.2/evidence/phase_10/phase10_report.json +35 -0
  96. pycforge-1.0.2/evidence/phase_10/progress_observer_report.json +19 -0
  97. pycforge-1.0.2/evidence/phase_10/qt_widget_smoke_report.json +22 -0
  98. pycforge-1.0.2/evidence/phase_10/rule_report.json +7 -0
  99. pycforge-1.0.2/evidence/phase_10/semantic_preservation_report.json +18 -0
  100. pycforge-1.0.2/evidence/phase_10/test_summary.json +11 -0
  101. pycforge-1.0.2/evidence/phase_10/transition_report.json +10 -0
  102. pycforge-1.0.2/evidence/phase_11/architecture_report.json +6 -0
  103. pycforge-1.0.2/evidence/phase_11/container_report.json +27 -0
  104. pycforge-1.0.2/evidence/phase_11/determinism_report.json +6 -0
  105. pycforge-1.0.2/evidence/phase_11/helper_registry_report.json +17 -0
  106. pycforge-1.0.2/evidence/phase_11/package_report.json +29 -0
  107. pycforge-1.0.2/evidence/phase_11/phase11_report.json +34 -0
  108. pycforge-1.0.2/evidence/phase_11/rule_report.json +203 -0
  109. pycforge-1.0.2/evidence/phase_11/schema_report.json +20 -0
  110. pycforge-1.0.2/evidence/phase_11/semantic_preservation_report.json +17 -0
  111. pycforge-1.0.2/evidence/phase_11/test_summary.json +10 -0
  112. pycforge-1.0.2/evidence/phase_11/transition_report.json +8 -0
  113. pycforge-1.0.2/evidence/phase_12/architecture_report.json +6 -0
  114. pycforge-1.0.2/evidence/phase_12/container_report.json +27 -0
  115. pycforge-1.0.2/evidence/phase_12/determinism_report.json +22 -0
  116. pycforge-1.0.2/evidence/phase_12/helper_registry_report.json +17 -0
  117. pycforge-1.0.2/evidence/phase_12/module_report.json +28 -0
  118. pycforge-1.0.2/evidence/phase_12/package_report.json +40 -0
  119. pycforge-1.0.2/evidence/phase_12/phase12_report.json +45 -0
  120. pycforge-1.0.2/evidence/phase_12/rule_report.json +269 -0
  121. pycforge-1.0.2/evidence/phase_12/schema_report.json +29 -0
  122. pycforge-1.0.2/evidence/phase_12/semantic_preservation_report.json +41 -0
  123. pycforge-1.0.2/evidence/phase_12/source_boundary_report.json +28 -0
  124. pycforge-1.0.2/evidence/phase_12/test_summary.json +10 -0
  125. pycforge-1.0.2/evidence/phase_12/transition_report.json +8 -0
  126. pycforge-1.0.2/evidence/phase_13/release_report.json +98 -0
  127. pycforge-1.0.2/evidence/phase_14/conversion_debt.json +145 -0
  128. pycforge-1.0.2/evidence/phase_14/entry_report.json +66 -0
  129. pycforge-1.0.2/evidence/phase_14/release_report.json +99 -0
  130. pycforge-1.0.2/evidence/phase_14b/conversion_debt.json +150 -0
  131. pycforge-1.0.2/evidence/phase_14b/entry_report.json +131 -0
  132. pycforge-1.0.2/evidence/phase_14b/release_report.json +144 -0
  133. pycforge-1.0.2/evidence/phase_14c/conversion_debt.json +153 -0
  134. pycforge-1.0.2/evidence/phase_14c/entry_report.json +150 -0
  135. pycforge-1.0.2/evidence/phase_14c/release_report.json +201 -0
  136. pycforge-1.0.2/evidence/phase_14d/conversion_debt.json +156 -0
  137. pycforge-1.0.2/evidence/phase_14d/entry_report.json +230 -0
  138. pycforge-1.0.2/evidence/phase_14d/release_report.json +194 -0
  139. pycforge-1.0.2/evidence/phase_15a/performance_evidence.json +97 -0
  140. pycforge-1.0.2/evidence/phase_15a/release_report.json +126 -0
  141. pycforge-1.0.2/evidence/phase_15a/validation_report.json +1 -0
  142. pycforge-1.0.2/evidence/phase_15b/action_registry_evidence.json +40 -0
  143. pycforge-1.0.2/evidence/phase_15b/validation_report.json +1 -0
  144. pycforge-1.0.2/evidence/phase_15b/visual_system_evidence.json +39 -0
  145. pycforge-1.0.2/evidence/phase_15c/action_registry_evidence.json +60 -0
  146. pycforge-1.0.2/evidence/phase_15c/feature_evidence.json +116 -0
  147. pycforge-1.0.2/evidence/phase_15c/performance_evidence.json +89 -0
  148. pycforge-1.0.2/evidence/phase_15c/validation_report.json +1 -0
  149. pycforge-1.0.2/evidence/pycforge_workspace_0_12_1/gate_evidence.md +23 -0
  150. pycforge-1.0.2/evidence/pycforge_workspace_0_12_1/release_report.json +48 -0
  151. pycforge-1.0.2/evidence/pycforge_workspace_0_12_2/manual_review.md +46 -0
  152. pycforge-1.0.2/evidence/pycforge_workspace_0_12_2/qt_widget_smoke_scale_1.json +55 -0
  153. pycforge-1.0.2/evidence/pycforge_workspace_0_12_2/qt_widget_smoke_scale_1.png +0 -0
  154. pycforge-1.0.2/evidence/pycforge_workspace_0_12_2/qt_widget_smoke_scale_2.json +55 -0
  155. pycforge-1.0.2/evidence/pycforge_workspace_0_12_2/qt_widget_smoke_scale_2.png +0 -0
  156. pycforge-1.0.2/evidence/pycforge_workspace_0_12_2/release_report.json +79 -0
  157. pycforge-1.0.2/evidence/ting_agents/compiler_custody_attestation.json +80 -0
  158. pycforge-1.0.2/fixtures/c_ir/essential_golden.c +6 -0
  159. pycforge-1.0.2/fixtures/first_milestone/add.py +2 -0
  160. pycforge-1.0.2/fixtures/first_milestone/expected.c +6 -0
  161. pycforge-1.0.2/fixtures/first_milestone/expected_ruleplans.json +223 -0
  162. pycforge-1.0.2/fixtures/support_templates/pycf_i64_floor_div_v1.c +14 -0
  163. pycforge-1.0.2/fixtures/support_templates/pycf_i64_floor_mod_v1.c +13 -0
  164. pycforge-1.0.2/licenses/TING_REASONER.txt +22 -0
  165. pycforge-1.0.2/pycforge/_vendor/__init__.py +5 -0
  166. pycforge-1.0.2/pycforge/_vendor/ting_reasoner/__init__.py +74 -0
  167. pycforge-1.0.2/pycforge/_vendor/ting_reasoner/engine.py +3820 -0
  168. pycforge-1.0.2/pycforge/_vendor/ting_reasoner/errors.py +52 -0
  169. pycforge-1.0.2/pycforge/_vendor/ting_reasoner/ir.py +1239 -0
  170. pycforge-1.0.2/pycforge/_vendor/ting_reasoner/model.py +272 -0
  171. pycforge-1.0.2/pycforge/_vendor/ting_reasoner/nd.py +418 -0
  172. pycforge-1.0.2/pycforge/_vendor/ting_reasoner/py.typed +1 -0
  173. pycforge-1.0.2/pycforge/_vendor/ting_reasoner/results.py +306 -0
  174. pycforge-1.0.2/pycforge/_vendor/ting_reasoner/store.py +724 -0
  175. pycforge-1.0.2/pycforge/_vendor/ting_reasoner/transactions.py +316 -0
  176. pycforge-1.0.2/pycforge/_vendor/ting_reasoner_provenance.json +27 -0
  177. pycforge-1.0.2/pycforge/_version.py +1 -0
  178. pycforge-1.0.2/pycforge/converter/analysis/model.py +159 -0
  179. pycforge-1.0.2/pycforge/converter/analysis/planning.py +559 -0
  180. pycforge-1.0.2/pycforge/converter/analysis/stage.py +2833 -0
  181. pycforge-1.0.2/pycforge/converter/analysis/validation.py +3479 -0
  182. pycforge-1.0.2/pycforge/converter/containers/__init__.py +21 -0
  183. pycforge-1.0.2/pycforge/converter/containers/analysis.py +748 -0
  184. pycforge-1.0.2/pycforge/converter/containers/lowering.py +439 -0
  185. pycforge-1.0.2/pycforge/converter/containers/model.py +178 -0
  186. pycforge-1.0.2/pycforge/converter/facade.py +532 -0
  187. pycforge-1.0.2/pycforge/converter/lowering.py +1582 -0
  188. pycforge-1.0.2/pycforge/ide/__init__.py +19 -0
  189. pycforge-1.0.2/pycforge/ide/action_contract.py +497 -0
  190. pycforge-1.0.2/pycforge/ide/controller.py +999 -0
  191. pycforge-1.0.2/pycforge/ide/controller_conversion.py +597 -0
  192. pycforge-1.0.2/pycforge/ide/editor.py +970 -0
  193. pycforge-1.0.2/pycforge/ide/editor_commands_qt.py +568 -0
  194. pycforge-1.0.2/pycforge/ide/editor_sidebars.py +245 -0
  195. pycforge-1.0.2/pycforge/ide/find_replace.py +547 -0
  196. pycforge-1.0.2/pycforge/ide/icons.py +98 -0
  197. pycforge-1.0.2/pycforge/ide/model.py +164 -0
  198. pycforge-1.0.2/pycforge/ide/panels.py +999 -0
  199. pycforge-1.0.2/pycforge/ide/qt.py +286 -0
  200. pycforge-1.0.2/pycforge/ide/qt_about.py +301 -0
  201. pycforge-1.0.2/pycforge/ide/qt_actions.py +488 -0
  202. pycforge-1.0.2/pycforge/ide/qt_close.py +223 -0
  203. pycforge-1.0.2/pycforge/ide/qt_command_palette.py +368 -0
  204. pycforge-1.0.2/pycforge/ide/qt_contract.py +367 -0
  205. pycforge-1.0.2/pycforge/ide/qt_dialog_chrome.py +276 -0
  206. pycforge-1.0.2/pycforge/ide/qt_documents.py +519 -0
  207. pycforge-1.0.2/pycforge/ide/qt_editor_buffers.py +125 -0
  208. pycforge-1.0.2/pycforge/ide/qt_editor_settings.py +236 -0
  209. pycforge-1.0.2/pycforge/ide/qt_editor_surfaces.py +139 -0
  210. pycforge-1.0.2/pycforge/ide/qt_file_dialogs.py +946 -0
  211. pycforge-1.0.2/pycforge/ide/qt_forgelens.py +274 -0
  212. pycforge-1.0.2/pycforge/ide/qt_help.py +994 -0
  213. pycforge-1.0.2/pycforge/ide/qt_icons.py +77 -0
  214. pycforge-1.0.2/pycforge/ide/qt_menus.py +329 -0
  215. pycforge-1.0.2/pycforge/ide/qt_projection.py +588 -0
  216. pycforge-1.0.2/pycforge/ide/qt_screen_geometry.py +166 -0
  217. pycforge-1.0.2/pycforge/ide/qt_session.py +115 -0
  218. pycforge-1.0.2/pycforge/ide/qt_session_state.py +157 -0
  219. pycforge-1.0.2/pycforge/ide/qt_shell.py +507 -0
  220. pycforge-1.0.2/pycforge/ide/qt_shell_interactions.py +398 -0
  221. pycforge-1.0.2/pycforge/ide/qt_source_preview.py +478 -0
  222. pycforge-1.0.2/pycforge/ide/qt_startup.py +330 -0
  223. pycforge-1.0.2/pycforge/ide/qt_state.py +444 -0
  224. pycforge-1.0.2/pycforge/ide/qt_text_settings.py +321 -0
  225. pycforge-1.0.2/pycforge/ide/qt_ting_actions.py +96 -0
  226. pycforge-1.0.2/pycforge/ide/qt_ting_feedback.py +176 -0
  227. pycforge-1.0.2/pycforge/ide/qt_toast.py +105 -0
  228. pycforge-1.0.2/pycforge/ide/qt_window_chrome.py +585 -0
  229. pycforge-1.0.2/pycforge/ide/qt_window_resize.py +93 -0
  230. pycforge-1.0.2/pycforge/ide/qt_workspace_features.py +530 -0
  231. pycforge-1.0.2/pycforge/ide/qt_workspace_navigation.py +310 -0
  232. pycforge-1.0.2/pycforge/ide/qt_workspace_widgets.py +401 -0
  233. pycforge-1.0.2/pycforge/ide/resources/help/calls-modules.html +92 -0
  234. pycforge-1.0.2/pycforge/ide/resources/help/catalog.json +129 -0
  235. pycforge-1.0.2/pycforge/ide/resources/help/cli-api.html +105 -0
  236. pycforge-1.0.2/pycforge/ide/resources/help/containers-records.html +126 -0
  237. pycforge-1.0.2/pycforge/ide/resources/help/contracts.html +67 -0
  238. pycforge-1.0.2/pycforge/ide/resources/help/control-flow.html +119 -0
  239. pycforge-1.0.2/pycforge/ide/resources/help/diagnostics.html +92 -0
  240. pycforge-1.0.2/pycforge/ide/resources/help/file-io.html +132 -0
  241. pycforge-1.0.2/pycforge/ide/resources/help/help-authoring.html +71 -0
  242. pycforge-1.0.2/pycforge/ide/resources/help/help.css +144 -0
  243. pycforge-1.0.2/pycforge/ide/resources/help/safety-limits.html +80 -0
  244. pycforge-1.0.2/pycforge/ide/resources/help/shortcuts.html +64 -0
  245. pycforge-1.0.2/pycforge/ide/resources/help/start.html +76 -0
  246. pycforge-1.0.2/pycforge/ide/resources/help/ting-agents.html +104 -0
  247. pycforge-1.0.2/pycforge/ide/resources/help/types-expressions.html +94 -0
  248. pycforge-1.0.2/pycforge/ide/resources/help/workspace.html +153 -0
  249. pycforge-1.0.2/pycforge/ide/resources/icons/brand-mark.svg +1 -0
  250. pycforge-1.0.2/pycforge/ide/resources/icons/help.svg +6 -0
  251. pycforge-1.0.2/pycforge/ide/source_structure.py +561 -0
  252. pycforge-1.0.2/pycforge/ide/theme.py +204 -0
  253. pycforge-1.0.2/pycforge/ide/theme_steel_stylesheet.py +734 -0
  254. pycforge-1.0.2/pycforge/ide/theme_stylesheet.py +594 -0
  255. pycforge-1.0.2/pycforge/ide/theme_workspace_stylesheet.py +169 -0
  256. pycforge-1.0.2/pycforge/ide/ting_feedback.py +153 -0
  257. pycforge-1.0.2/pycforge/ide/visual_tokens.py +146 -0
  258. pycforge-1.0.2/pycforge/ide/workspace_session.py +284 -0
  259. pycforge-1.0.2/pycforge/ting_agents/__init__.py +51 -0
  260. pycforge-1.0.2/pycforge/ting_agents/coordinator.py +176 -0
  261. pycforge-1.0.2/pycforge/ting_agents/errors.py +27 -0
  262. pycforge-1.0.2/pycforge/ting_agents/model.py +194 -0
  263. pycforge-1.0.2/pycforge/ting_agents/registry.py +358 -0
  264. pycforge-1.0.2/pycforge/ting_agents/rulesets/capability.ting +0 -0
  265. pycforge-1.0.2/pycforge/ting_agents/rulesets/capability.tingspec.json +623 -0
  266. pycforge-1.0.2/pycforge/ting_agents/rulesets/lowering.ting +0 -0
  267. pycforge-1.0.2/pycforge/ting_agents/rulesets/lowering.tingspec.json +468 -0
  268. pycforge-1.0.2/pycforge/ting_agents/rulesets/ownership.ting +0 -0
  269. pycforge-1.0.2/pycforge/ting_agents/rulesets/ownership.tingspec.json +585 -0
  270. pycforge-1.0.2/pycforge/ting_agents/rulesets/registry.json +118 -0
  271. pycforge-1.0.2/pycforge/ting_agents/rulesets/semantics.ting +0 -0
  272. pycforge-1.0.2/pycforge/ting_agents/rulesets/semantics.tingspec.json +468 -0
  273. pycforge-1.0.2/pycforge/ting_agents/rulesets/syntax.ting +0 -0
  274. pycforge-1.0.2/pycforge/ting_agents/rulesets/syntax.tingspec.json +468 -0
  275. pycforge-1.0.2/pycforge/ting_agents/rulesets/verification.ting +0 -0
  276. pycforge-1.0.2/pycforge/ting_agents/rulesets/verification.tingspec.json +585 -0
  277. pycforge-1.0.2/pycforge.egg-info/PKG-INFO +188 -0
  278. pycforge-1.0.2/pycforge.egg-info/SOURCES.txt +843 -0
  279. pycforge-1.0.2/pyproject.toml +54 -0
  280. pycforge-1.0.2/schemas/decision_trace.schema.json +91 -0
  281. pycforge-1.0.2/schemas/telemetry.schema.json +27 -0
  282. pycforge-1.0.2/specifications/analysis_and_planning.md +319 -0
  283. pycforge-1.0.2/specifications/approximation_policy.md +7 -0
  284. pycforge-1.0.2/specifications/bounded_containers.md +90 -0
  285. pycforge-1.0.2/specifications/c_ir_schema.md +231 -0
  286. pycforge-1.0.2/specifications/c_output_style.md +74 -0
  287. pycforge-1.0.2/specifications/c_renderer_contract.md +126 -0
  288. pycforge-1.0.2/specifications/configuration.md +76 -0
  289. pycforge-1.0.2/specifications/conversion_semantics.md +109 -0
  290. pycforge-1.0.2/specifications/diagnostics.md +197 -0
  291. pycforge-1.0.2/specifications/fact_table_schema.md +267 -0
  292. pycforge-1.0.2/specifications/feature_matrix.json +91 -0
  293. pycforge-1.0.2/specifications/generated_c_conformance.md +115 -0
  294. pycforge-1.0.2/specifications/module_bundles.md +139 -0
  295. pycforge-1.0.2/specifications/phase14a_bounded_integer_divmod.md +156 -0
  296. pycforge-1.0.2/specifications/phase14b_conditional_temporary_regions.md +245 -0
  297. pycforge-1.0.2/specifications/phase14c_direct_keyword_calls.md +362 -0
  298. pycforge-1.0.2/specifications/phase14d_required_keyword_only_calls.md +483 -0
  299. pycforge-1.0.2/specifications/phase6_first_complete_slice.md +13 -0
  300. pycforge-1.0.2/specifications/phase7_workspace.md +17 -0
  301. pycforge-1.0.2/specifications/phase8_control_flow.md +28 -0
  302. pycforge-1.0.2/specifications/phase9_functions_calls.md +86 -0
  303. pycforge-1.0.2/specifications/product_boundary.md +22 -0
  304. pycforge-1.0.2/specifications/pycforge_workspace.md +355 -0
  305. pycforge-1.0.2/specifications/pycforge_workspace_legacy_0_1.md +138 -0
  306. pycforge-1.0.2/specifications/python_ir_schema.md +81 -0
  307. pycforge-1.0.2/specifications/representation_ownership_lifetime.md +173 -0
  308. pycforge-1.0.2/specifications/resource_cancellation_save.md +44 -0
  309. pycforge-1.0.2/specifications/result_and_fingerprints.md +162 -0
  310. pycforge-1.0.2/specifications/rule_plan_schema.md +264 -0
  311. pycforge-1.0.2/specifications/source_bundle.md +52 -0
  312. pycforge-1.0.2/specifications/source_frontend.md +66 -0
  313. pycforge-1.0.2/specifications/static_records.md +171 -0
  314. pycforge-1.0.2/specifications/support_templates.md +113 -0
  315. pycforge-1.0.2/specifications/supported_python.md +353 -0
  316. pycforge-1.0.2/specifications/target_c_source_contract.md +65 -0
  317. pycforge-1.0.2/specifications/ting_agent_architecture.md +157 -0
  318. pycforge-1.0.2/tests/test_about_and_window_chrome_review.py +217 -0
  319. pycforge-1.0.2/tests/test_checkpoint_e_audits.py +294 -0
  320. pycforge-1.0.2/tests/test_checkpoint_e_feature_matrix.py +165 -0
  321. pycforge-1.0.2/tests/test_checkpoint_e_predecessor_equivalence.py +201 -0
  322. pycforge-1.0.2/tests/test_checkpoint_e_release_packaging.py +521 -0
  323. pycforge-1.0.2/tests/test_checkpoint_e_versioning.py +154 -0
  324. pycforge-1.0.2/tests/test_editor_behavior_qt.py +172 -0
  325. pycforge-1.0.2/tests/test_editor_settings_qt.py +275 -0
  326. pycforge-1.0.2/tests/test_final_windows_acceptance_1_0_1.py +407 -0
  327. pycforge-1.0.2/tests/test_forgelens.py +545 -0
  328. pycforge-1.0.2/tests/test_forgelens_controller.py +104 -0
  329. pycforge-1.0.2/tests/test_frontend_eof_boundaries.py +109 -0
  330. pycforge-1.0.2/tests/test_help_documentation_0_16_3.py +269 -0
  331. pycforge-1.0.2/tests/test_phase0.py +50 -0
  332. pycforge-1.0.2/tests/test_phase1.py +48 -0
  333. pycforge-1.0.2/tests/test_phase10.py +253 -0
  334. pycforge-1.0.2/tests/test_phase10_opening.py +133 -0
  335. pycforge-1.0.2/tests/test_phase11.py +354 -0
  336. pycforge-1.0.2/tests/test_phase12.py +740 -0
  337. pycforge-1.0.2/tests/test_phase12_1_editor.py +125 -0
  338. pycforge-1.0.2/tests/test_phase12_1_pycforge_theme.py +253 -0
  339. pycforge-1.0.2/tests/test_phase12_2_components.py +247 -0
  340. pycforge-1.0.2/tests/test_phase12_2_controller.py +203 -0
  341. pycforge-1.0.2/tests/test_phase12_2_metadata.py +252 -0
  342. pycforge-1.0.2/tests/test_phase12_2_qt.py +273 -0
  343. pycforge-1.0.2/tests/test_phase13_audits.py +133 -0
  344. pycforge-1.0.2/tests/test_phase13_c_ir.py +629 -0
  345. pycforge-1.0.2/tests/test_phase13_contracts.py +210 -0
  346. pycforge-1.0.2/tests/test_phase13_end_to_end.py +481 -0
  347. pycforge-1.0.2/tests/test_phase13_record_analysis.py +472 -0
  348. pycforge-1.0.2/tests/test_phase13_record_lowering.py +435 -0
  349. pycforge-1.0.2/tests/test_phase13_record_validation.py +421 -0
  350. pycforge-1.0.2/tests/test_phase14_numeric_contracts.py +159 -0
  351. pycforge-1.0.2/tests/test_phase14_numeric_end_to_end.py +449 -0
  352. pycforge-1.0.2/tests/test_phase14_numeric_hardening.py +456 -0
  353. pycforge-1.0.2/tests/test_phase14b_audits.py +162 -0
  354. pycforge-1.0.2/tests/test_phase14b_conditional_analysis.py +399 -0
  355. pycforge-1.0.2/tests/test_phase14b_conditional_contracts.py +235 -0
  356. pycforge-1.0.2/tests/test_phase14b_conditional_hardening.py +484 -0
  357. pycforge-1.0.2/tests/test_phase14b_conditional_lowering.py +355 -0
  358. pycforge-1.0.2/tests/test_phase14c_cumulative_eligibility.py +398 -0
  359. pycforge-1.0.2/tests/test_phase14c_keyword_analysis.py +234 -0
  360. pycforge-1.0.2/tests/test_phase14c_keyword_audits.py +138 -0
  361. pycforge-1.0.2/tests/test_phase14c_keyword_contracts.py +253 -0
  362. pycforge-1.0.2/tests/test_phase14c_keyword_hardening.py +675 -0
  363. pycforge-1.0.2/tests/test_phase14c_keyword_lowering.py +323 -0
  364. pycforge-1.0.2/tests/test_phase14d_cumulative_eligibility.py +381 -0
  365. pycforge-1.0.2/tests/test_phase14d_keyword_only_analysis.py +275 -0
  366. pycforge-1.0.2/tests/test_phase14d_keyword_only_contracts.py +486 -0
  367. pycforge-1.0.2/tests/test_phase14d_keyword_only_hardening.py +857 -0
  368. pycforge-1.0.2/tests/test_phase14d_keyword_only_lowering.py +282 -0
  369. pycforge-1.0.2/tests/test_phase15a_async_search.py +219 -0
  370. pycforge-1.0.2/tests/test_phase15a_controller.py +202 -0
  371. pycforge-1.0.2/tests/test_phase15a_editor_decomposition.py +94 -0
  372. pycforge-1.0.2/tests/test_phase15a_editor_large_file.py +143 -0
  373. pycforge-1.0.2/tests/test_phase15a_io_service.py +84 -0
  374. pycforge-1.0.2/tests/test_phase15a_metadata.py +253 -0
  375. pycforge-1.0.2/tests/test_phase15a_position_indexes.py +138 -0
  376. pycforge-1.0.2/tests/test_phase15a_qt_decomposition.py +94 -0
  377. pycforge-1.0.2/tests/test_phase15a_release_packaging.py +159 -0
  378. pycforge-1.0.2/tests/test_phase15a_revisions.py +231 -0
  379. pycforge-1.0.2/tests/test_phase15a_stress.py +60 -0
  380. pycforge-1.0.2/tests/test_phase15a_supervisor.py +230 -0
  381. pycforge-1.0.2/tests/test_phase15a_worker_protocol.py +366 -0
  382. pycforge-1.0.2/tests/test_phase15b_action_foundation.py +224 -0
  383. pycforge-1.0.2/tests/test_phase15b_action_integration.py +202 -0
  384. pycforge-1.0.2/tests/test_phase15b_release_contract.py +85 -0
  385. pycforge-1.0.2/tests/test_phase15b_release_packaging.py +1018 -0
  386. pycforge-1.0.2/tests/test_phase15b_visual_foundation.py +315 -0
  387. pycforge-1.0.2/tests/test_phase15b_visual_integration.py +218 -0
  388. pycforge-1.0.2/tests/test_phase15c_action_contract.py +423 -0
  389. pycforge-1.0.2/tests/test_phase15c_command_palette.py +115 -0
  390. pycforge-1.0.2/tests/test_phase15c_qt_command_contract.py +122 -0
  391. pycforge-1.0.2/tests/test_phase15c_qt_panels_contract.py +177 -0
  392. pycforge-1.0.2/tests/test_phase15c_qt_position_reverse.py +196 -0
  393. pycforge-1.0.2/tests/test_phase15c_qt_workspace_integration.py +898 -0
  394. pycforge-1.0.2/tests/test_phase15c_release_contract.py +99 -0
  395. pycforge-1.0.2/tests/test_phase15c_release_packaging.py +1049 -0
  396. pycforge-1.0.2/tests/test_phase15c_session_history.py +347 -0
  397. pycforge-1.0.2/tests/test_phase15c_source_editing.py +145 -0
  398. pycforge-1.0.2/tests/test_phase15c_source_structure.py +378 -0
  399. pycforge-1.0.2/tests/test_phase15c_visual_system.py +245 -0
  400. pycforge-1.0.2/tests/test_phase15c_workspace_search.py +335 -0
  401. pycforge-1.0.2/tests/test_phase15c_workspace_session.py +123 -0
  402. pycforge-1.0.2/tests/test_phase16_c_ir_validation_hardening.py +747 -0
  403. pycforge-1.0.2/tests/test_phase16_file_io_analysis.py +265 -0
  404. pycforge-1.0.2/tests/test_phase16_file_io_end_to_end.py +1662 -0
  405. pycforge-1.0.2/tests/test_phase16_file_io_payload_validation.py +450 -0
  406. pycforge-1.0.2/tests/test_phase16_file_io_registry.py +285 -0
  407. pycforge-1.0.2/tests/test_phase16_file_io_rejections.py +350 -0
  408. pycforge-1.0.2/tests/test_phase16_file_io_runtime.py +379 -0
  409. pycforge-1.0.2/tests/test_phase16_file_io_validation.py +334 -0
  410. pycforge-1.0.2/tests/test_phase16_loop_analysis.py +214 -0
  411. pycforge-1.0.2/tests/test_phase16_loop_end_to_end.py +459 -0
  412. pycforge-1.0.2/tests/test_phase16_loop_lowering.py +396 -0
  413. pycforge-1.0.2/tests/test_phase16_loop_payload_validation.py +226 -0
  414. pycforge-1.0.2/tests/test_phase16_loop_resources.py +162 -0
  415. pycforge-1.0.2/tests/test_phase16_loop_validation.py +185 -0
  416. pycforge-1.0.2/tests/test_phase16_scope_analysis.py +276 -0
  417. pycforge-1.0.2/tests/test_phase16_scope_boundaries.py +203 -0
  418. pycforge-1.0.2/tests/test_phase16_scope_payload_validation.py +353 -0
  419. pycforge-1.0.2/tests/test_phase16_scope_validation.py +267 -0
  420. pycforge-1.0.2/tests/test_phase2.py +93 -0
  421. pycforge-1.0.2/tests/test_phase3.py +113 -0
  422. pycforge-1.0.2/tests/test_phase4.py +102 -0
  423. pycforge-1.0.2/tests/test_phase5.py +146 -0
  424. pycforge-1.0.2/tests/test_phase6.py +99 -0
  425. pycforge-1.0.2/tests/test_phase7.py +72 -0
  426. pycforge-1.0.2/tests/test_phase8.py +56 -0
  427. pycforge-1.0.2/tests/test_phase9.py +481 -0
  428. pycforge-1.0.2/tests/test_programmers_guide.py +133 -0
  429. pycforge-1.0.2/tests/test_public_distribution.py +177 -0
  430. pycforge-1.0.2/tests/test_pycforge_qt_integration.py +163 -0
  431. pycforge-1.0.2/tests/test_pycforge_workspace.py +293 -0
  432. pycforge-1.0.2/tests/test_qt_file_dialogs.py +543 -0
  433. pycforge-1.0.2/tests/test_qt_forgelens.py +184 -0
  434. pycforge-1.0.2/tests/test_qt_open_queue.py +30 -0
  435. pycforge-1.0.2/tests/test_release_1_0_2_presentation.py +120 -0
  436. pycforge-1.0.2/tests/test_release_contract_0_16_3.py +283 -0
  437. pycforge-1.0.2/tests/test_review_hardening.py +295 -0
  438. pycforge-1.0.2/tests/test_set_conversion_1_0_1.py +249 -0
  439. pycforge-1.0.2/tests/test_smoke_pycforge_workspace_0_12_2.py +206 -0
  440. pycforge-1.0.2/tests/test_source_preview.py +141 -0
  441. pycforge-1.0.2/tests/test_startup_progress_0_16_3.py +134 -0
  442. pycforge-1.0.2/tests/test_steel_theme.py +132 -0
  443. pycforge-1.0.2/tests/test_ting_agents.py +363 -0
  444. pycforge-1.0.2/tests/test_typing_ui_stability_qt.py +540 -0
  445. pycforge-1.0.2/tests/test_ui_continuity_1_0_1.py +296 -0
  446. pycforge-1.0.2/tests/test_ui_lifecycle_0_16_3.py +91 -0
  447. pycforge-1.0.2/tests/test_ui_review_corrections_1_0_1.py +242 -0
  448. pycforge-1.0.2/tests/test_validate_checkpoint_e.py +319 -0
  449. pycforge-1.0.2/tests/test_validate_phase13.py +90 -0
  450. pycforge-1.0.2/tests/test_validate_phase14.py +135 -0
  451. pycforge-1.0.2/tests/test_validate_phase14b.py +187 -0
  452. pycforge-1.0.2/tests/test_validate_phase14c.py +247 -0
  453. pycforge-1.0.2/tests/test_validate_phase14d.py +763 -0
  454. pycforge-1.0.2/tests/test_validate_phase15a.py +482 -0
  455. pycforge-1.0.2/tests/test_validate_phase15b.py +479 -0
  456. pycforge-1.0.2/tests/test_validate_phase15c.py +526 -0
  457. pycforge-1.0.2/tests/test_validate_phase16.py +349 -0
  458. pycforge-1.0.2/tests/test_validate_pycforge_workspace_0_12_2.py +179 -0
  459. pycforge-1.0.2/tests/test_validate_workspace_usability_0_15_3.py +164 -0
  460. pycforge-1.0.2/tests/test_windows_ui_scale_and_identity_1_0_1.py +229 -0
  461. pycforge-1.0.2/tools/_phase15a_runtime_validation.py +467 -0
  462. pycforge-1.0.2/tools/_phase15b_release_contract.py +159 -0
  463. pycforge-1.0.2/tools/_phase15c_release_contract.py +186 -0
  464. pycforge-1.0.2/tools/build_checkpoint_e_release.py +1670 -0
  465. pycforge-1.0.2/tools/build_phase15a_release.py +857 -0
  466. pycforge-1.0.2/tools/build_phase15b_release.py +2115 -0
  467. pycforge-1.0.2/tools/build_phase15c_release.py +2248 -0
  468. pycforge-1.0.2/tools/build_programmers_guide.py +1430 -0
  469. pycforge-1.0.2/tools/checkpoint_e_predecessor_equivalence.py +878 -0
  470. pycforge-1.0.2/tools/collect_phase11_evidence.py +207 -0
  471. pycforge-1.0.2/tools/collect_phase12_evidence.py +555 -0
  472. pycforge-1.0.2/tools/normalize_sdist.py +91 -0
  473. pycforge-1.0.2/tools/smoke_phase10_qt.py +109 -0
  474. pycforge-1.0.2/tools/smoke_phase11_qt.py +112 -0
  475. pycforge-1.0.2/tools/smoke_pycforge_workspace_0_12_2.py +939 -0
  476. pycforge-1.0.2/tools/validate_checkpoint_e.py +954 -0
  477. pycforge-1.0.2/tools/validate_phase0.py +56 -0
  478. pycforge-1.0.2/tools/validate_phase1.py +14 -0
  479. pycforge-1.0.2/tools/validate_phase10.py +191 -0
  480. pycforge-1.0.2/tools/validate_phase10_opening.py +128 -0
  481. pycforge-1.0.2/tools/validate_phase11.py +222 -0
  482. pycforge-1.0.2/tools/validate_phase12.py +621 -0
  483. pycforge-1.0.2/tools/validate_phase13.py +640 -0
  484. pycforge-1.0.2/tools/validate_phase14.py +1067 -0
  485. pycforge-1.0.2/tools/validate_phase14b.py +1229 -0
  486. pycforge-1.0.2/tools/validate_phase14c.py +1687 -0
  487. pycforge-1.0.2/tools/validate_phase14d.py +2160 -0
  488. pycforge-1.0.2/tools/validate_phase15a.py +756 -0
  489. pycforge-1.0.2/tools/validate_phase15b.py +861 -0
  490. pycforge-1.0.2/tools/validate_phase15c.py +1375 -0
  491. pycforge-1.0.2/tools/validate_phase16.py +1375 -0
  492. pycforge-1.0.2/tools/validate_phase2.py +26 -0
  493. pycforge-1.0.2/tools/validate_phase3.py +25 -0
  494. pycforge-1.0.2/tools/validate_phase4.py +25 -0
  495. pycforge-1.0.2/tools/validate_phase5.py +32 -0
  496. pycforge-1.0.2/tools/validate_phase6.py +17 -0
  497. pycforge-1.0.2/tools/validate_phase7.py +20 -0
  498. pycforge-1.0.2/tools/validate_phase8.py +22 -0
  499. pycforge-1.0.2/tools/validate_phase9.py +92 -0
  500. pycforge-1.0.2/tools/validate_pycforge_workspace_0_12_1.py +716 -0
  501. pycforge-1.0.2/tools/validate_pycforge_workspace_0_12_2.py +911 -0
  502. pycforge-1.0.2/tools/validate_ting_agents.py +426 -0
  503. pycforge-1.0.2/tools/validate_workspace_usability_0_15_3.py +458 -0
  504. pycforge-1.0.2/tools/verify_public_distribution.py +559 -0
  505. pycforge-1.0.2/tools/verify_pypi_readme.py +91 -0
  506. pycforge-1.0.2/transition/checkpoint_e/architecture_and_workspace_decision.md +103 -0
  507. pycforge-1.0.2/transition/checkpoint_e/breadth_and_change_budgets.md +98 -0
  508. pycforge-1.0.2/transition/checkpoint_e/entry_criteria.md +85 -0
  509. pycforge-1.0.2/transition/checkpoint_e/feature_boundaries.md +94 -0
  510. pycforge-1.0.2/transition/checkpoint_e/feature_matrix_reconciliation.md +48 -0
  511. pycforge-1.0.2/transition/checkpoint_e/gate_evidence.md +169 -0
  512. pycforge-1.0.2/transition/checkpoint_e/manifest.json +171 -0
  513. pycforge-1.0.2/transition/checkpoint_e/opening_evidence.md +99 -0
  514. pycforge-1.0.2/transition/checkpoint_e/performance_budgets.md +136 -0
  515. pycforge-1.0.2/transition/checkpoint_e/release_fingerprint.json +90 -0
  516. pycforge-1.0.2/transition/checkpoint_e/rollback_conditions.md +75 -0
  517. pycforge-1.0.2/transition/phase_0/baseline_fingerprint.json +7 -0
  518. pycforge-1.0.2/transition/phase_0/first_milestone_contract.md +13 -0
  519. pycforge-1.0.2/transition/phase_0/manifest.json +40 -0
  520. pycforge-1.0.2/transition/phase_0/non_goals_by_phase.md +13 -0
  521. pycforge-1.0.2/transition/phase_1/baseline_fingerprint.json +7 -0
  522. pycforge-1.0.2/transition/phase_1/empty_pipeline_invariants.md +12 -0
  523. pycforge-1.0.2/transition/phase_1/facade_contract.md +3 -0
  524. pycforge-1.0.2/transition/phase_1/manifest.json +25 -0
  525. pycforge-1.0.2/transition/phase_10/baseline_fingerprint.json +13 -0
  526. pycforge-1.0.2/transition/phase_10/entry_criteria.md +23 -0
  527. pycforge-1.0.2/transition/phase_10/entry_gate.md +18 -0
  528. pycforge-1.0.2/transition/phase_10/gate_evidence.md +36 -0
  529. pycforge-1.0.2/transition/phase_10/helper_feasibility_decisions.md +58 -0
  530. pycforge-1.0.2/transition/phase_10/manifest.json +66 -0
  531. pycforge-1.0.2/transition/phase_10/opening_checkpoint_fingerprint.json +13 -0
  532. pycforge-1.0.2/transition/phase_10/opening_checkpoint_manifest.json +50 -0
  533. pycforge-1.0.2/transition/phase_10/rollback_conditions.md +20 -0
  534. pycforge-1.0.2/transition/phase_11/baseline_fingerprint.json +13 -0
  535. pycforge-1.0.2/transition/phase_11/container_representation_decisions.md +98 -0
  536. pycforge-1.0.2/transition/phase_11/entry_criteria.md +23 -0
  537. pycforge-1.0.2/transition/phase_11/gate_evidence.md +24 -0
  538. pycforge-1.0.2/transition/phase_11/manifest.json +75 -0
  539. pycforge-1.0.2/transition/phase_11/rollback_conditions.md +23 -0
  540. pycforge-1.0.2/transition/phase_12/baseline_fingerprint.json +15 -0
  541. pycforge-1.0.2/transition/phase_12/entry_criteria.md +21 -0
  542. pycforge-1.0.2/transition/phase_12/gate_evidence.md +54 -0
  543. pycforge-1.0.2/transition/phase_12/manifest.json +86 -0
  544. pycforge-1.0.2/transition/phase_12/module_bundle_decisions.md +101 -0
  545. pycforge-1.0.2/transition/phase_12/rollback_conditions.md +25 -0
  546. pycforge-1.0.2/transition/phase_13/baseline_fingerprint.json +18 -0
  547. pycforge-1.0.2/transition/phase_13/candidate_reseed.md +33 -0
  548. pycforge-1.0.2/transition/phase_13/entry_criteria.md +22 -0
  549. pycforge-1.0.2/transition/phase_13/gate_evidence.md +62 -0
  550. pycforge-1.0.2/transition/phase_13/manifest.json +82 -0
  551. pycforge-1.0.2/transition/phase_13/record_representation_decisions.md +97 -0
  552. pycforge-1.0.2/transition/phase_13/release_fingerprint.json +42 -0
  553. pycforge-1.0.2/transition/phase_13/rollback_conditions.md +29 -0
  554. pycforge-1.0.2/transition/phase_14/baseline_fingerprint.json +47 -0
  555. pycforge-1.0.2/transition/phase_14/breadth_and_change_budgets.md +81 -0
  556. pycforge-1.0.2/transition/phase_14/entry_criteria.md +57 -0
  557. pycforge-1.0.2/transition/phase_14/gate_evidence.md +85 -0
  558. pycforge-1.0.2/transition/phase_14/integer_divmod_decision.md +93 -0
  559. pycforge-1.0.2/transition/phase_14/manifest.json +109 -0
  560. pycforge-1.0.2/transition/phase_14/opening_evidence.md +36 -0
  561. pycforge-1.0.2/transition/phase_14/release_fingerprint.json +46 -0
  562. pycforge-1.0.2/transition/phase_14/rollback_conditions.md +50 -0
  563. pycforge-1.0.2/transition/phase_14b/baseline_fingerprint.json +58 -0
  564. pycforge-1.0.2/transition/phase_14b/breadth_and_change_budgets.md +134 -0
  565. pycforge-1.0.2/transition/phase_14b/conditional_temporary_regions_decision.md +138 -0
  566. pycforge-1.0.2/transition/phase_14b/entry_criteria.md +82 -0
  567. pycforge-1.0.2/transition/phase_14b/gate_evidence.md +100 -0
  568. pycforge-1.0.2/transition/phase_14b/manifest.json +144 -0
  569. pycforge-1.0.2/transition/phase_14b/opening_evidence.md +83 -0
  570. pycforge-1.0.2/transition/phase_14b/release_fingerprint.json +63 -0
  571. pycforge-1.0.2/transition/phase_14b/rollback_conditions.md +78 -0
  572. pycforge-1.0.2/transition/phase_14c/baseline_fingerprint.json +59 -0
  573. pycforge-1.0.2/transition/phase_14c/breadth_and_change_budgets.md +158 -0
  574. pycforge-1.0.2/transition/phase_14c/direct_keyword_calls_decision.md +152 -0
  575. pycforge-1.0.2/transition/phase_14c/entry_criteria.md +91 -0
  576. pycforge-1.0.2/transition/phase_14c/gate_evidence.md +162 -0
  577. pycforge-1.0.2/transition/phase_14c/manifest.json +173 -0
  578. pycforge-1.0.2/transition/phase_14c/opening_evidence.md +81 -0
  579. pycforge-1.0.2/transition/phase_14c/release_fingerprint.json +111 -0
  580. pycforge-1.0.2/transition/phase_14c/rollback_conditions.md +93 -0
  581. pycforge-1.0.2/transition/phase_14d/baseline_fingerprint.json +65 -0
  582. pycforge-1.0.2/transition/phase_14d/breadth_and_change_budgets.md +244 -0
  583. pycforge-1.0.2/transition/phase_14d/entry_criteria.md +124 -0
  584. pycforge-1.0.2/transition/phase_14d/gate_evidence.md +185 -0
  585. pycforge-1.0.2/transition/phase_14d/manifest.json +219 -0
  586. pycforge-1.0.2/transition/phase_14d/opening_evidence.md +130 -0
  587. pycforge-1.0.2/transition/phase_14d/release_fingerprint.json +131 -0
  588. pycforge-1.0.2/transition/phase_14d/required_keyword_only_calls_decision.md +250 -0
  589. pycforge-1.0.2/transition/phase_14d/rollback_conditions.md +133 -0
  590. pycforge-1.0.2/transition/phase_15a/entry_criteria.md +51 -0
  591. pycforge-1.0.2/transition/phase_15a/gate_evidence.md +69 -0
  592. pycforge-1.0.2/transition/phase_15a/manifest.json +189 -0
  593. pycforge-1.0.2/transition/phase_15a/release_fingerprint.json +8 -0
  594. pycforge-1.0.2/transition/phase_15a/responsiveness_and_isolation_decision.md +68 -0
  595. pycforge-1.0.2/transition/phase_15a/rollback_conditions.md +35 -0
  596. pycforge-1.0.2/transition/phase_15b/application_shell_decision.md +78 -0
  597. pycforge-1.0.2/transition/phase_15b/entry_criteria.md +58 -0
  598. pycforge-1.0.2/transition/phase_15b/gate_evidence.md +209 -0
  599. pycforge-1.0.2/transition/phase_15b/manifest.json +126 -0
  600. pycforge-1.0.2/transition/phase_15b/release_fingerprint.json +1 -0
  601. pycforge-1.0.2/transition/phase_15b/rollback_conditions.md +33 -0
  602. pycforge-1.0.2/transition/phase_15c/entry_criteria.md +74 -0
  603. pycforge-1.0.2/transition/phase_15c/gate_evidence.md +195 -0
  604. pycforge-1.0.2/transition/phase_15c/manifest.json +168 -0
  605. pycforge-1.0.2/transition/phase_15c/release_fingerprint.json +1 -0
  606. pycforge-1.0.2/transition/phase_15c/rollback_conditions.md +45 -0
  607. pycforge-1.0.2/transition/phase_15c/workspace_completeness_decision.md +91 -0
  608. pycforge-1.0.2/transition/phase_2/baseline_fingerprint.json +7 -0
  609. pycforge-1.0.2/transition/phase_2/checkpoint_a.md +10 -0
  610. pycforge-1.0.2/transition/phase_2/laboratory_contract.md +5 -0
  611. pycforge-1.0.2/transition/phase_2/manifest.json +61 -0
  612. pycforge-1.0.2/transition/phase_3/baseline_fingerprint.json +7 -0
  613. pycforge-1.0.2/transition/phase_3/gate_evidence.md +11 -0
  614. pycforge-1.0.2/transition/phase_3/manifest.json +23 -0
  615. pycforge-1.0.2/transition/phase_4/baseline_fingerprint.json +7 -0
  616. pycforge-1.0.2/transition/phase_4/gate_evidence.md +11 -0
  617. pycforge-1.0.2/transition/phase_4/manifest.json +30 -0
  618. pycforge-1.0.2/transition/phase_5/baseline_fingerprint.json +7 -0
  619. pycforge-1.0.2/transition/phase_5/entry_criteria.md +18 -0
  620. pycforge-1.0.2/transition/phase_5/gate_evidence.md +16 -0
  621. pycforge-1.0.2/transition/phase_5/manifest.json +39 -0
  622. pycforge-1.0.2/transition/phase_6/baseline_fingerprint.json +6 -0
  623. pycforge-1.0.2/transition/phase_6/checkpoint_b.md +3 -0
  624. pycforge-1.0.2/transition/phase_6/entry_criteria.md +3 -0
  625. pycforge-1.0.2/transition/phase_6/gate_evidence.md +16 -0
  626. pycforge-1.0.2/transition/phase_6/manifest.json +35 -0
  627. pycforge-1.0.2/transition/phase_7/baseline_fingerprint.json +5 -0
  628. pycforge-1.0.2/transition/phase_7/entry_criteria.md +6 -0
  629. pycforge-1.0.2/transition/phase_7/gate_evidence.md +7 -0
  630. pycforge-1.0.2/transition/phase_7/manifest.json +11 -0
  631. pycforge-1.0.2/transition/phase_7/rollback_conditions.md +3 -0
  632. pycforge-1.0.2/transition/phase_8/baseline_fingerprint.json +5 -0
  633. pycforge-1.0.2/transition/phase_8/entry_criteria.md +6 -0
  634. pycforge-1.0.2/transition/phase_8/gate_evidence.md +5 -0
  635. pycforge-1.0.2/transition/phase_8/manifest.json +14 -0
  636. pycforge-1.0.2/transition/phase_8/rollback_conditions.md +3 -0
  637. pycforge-1.0.2/transition/phase_9/baseline_fingerprint.json +6 -0
  638. pycforge-1.0.2/transition/phase_9/entry_criteria.md +14 -0
  639. pycforge-1.0.2/transition/phase_9/gate_evidence.md +25 -0
  640. pycforge-1.0.2/transition/phase_9/manifest.json +58 -0
  641. pycforge-1.0.2/transition/phase_9/rollback_conditions.md +16 -0
  642. pycforge-1.0.2/transition/phase_minus_1/feasibility_decisions.md +16 -0
  643. pycforge-1.0.2/transition/phase_minus_1/risk_register.json +11 -0
  644. pycforge-1.0.2/transition/workspace_hardening_0_12_1/README.md +33 -0
  645. pycforge-1.0.2/transition/workspace_hardening_0_12_1/manifest.json +42 -0
  646. pycforge-1.0.2/transition/workspace_hardening_0_12_2/README.md +30 -0
  647. pycforge-1.0.2/transition/workspace_hardening_0_12_2/gate_evidence.md +24 -0
  648. pycforge-1.0.2/transition/workspace_hardening_0_12_2/manifest.json +40 -0
  649. pycforge-0.16.2/CHANGELOG.md +0 -680
  650. pycforge-0.16.2/CURRENT_STATE.md +0 -354
  651. pycforge-0.16.2/MANIFEST.in +0 -19
  652. pycforge-0.16.2/PKG-INFO +0 -301
  653. pycforge-0.16.2/README.md +0 -277
  654. pycforge-0.16.2/RELEASE_NOTES.md +0 -290
  655. pycforge-0.16.2/ROADMAP.md +0 -11
  656. pycforge-0.16.2/pycforge/_version.py +0 -1
  657. pycforge-0.16.2/pycforge/converter/analysis/model.py +0 -158
  658. pycforge-0.16.2/pycforge/converter/analysis/planning.py +0 -518
  659. pycforge-0.16.2/pycforge/converter/analysis/stage.py +0 -2778
  660. pycforge-0.16.2/pycforge/converter/analysis/validation.py +0 -3323
  661. pycforge-0.16.2/pycforge/converter/containers/__init__.py +0 -19
  662. pycforge-0.16.2/pycforge/converter/containers/analysis.py +0 -545
  663. pycforge-0.16.2/pycforge/converter/containers/lowering.py +0 -290
  664. pycforge-0.16.2/pycforge/converter/containers/model.py +0 -146
  665. pycforge-0.16.2/pycforge/converter/facade.py +0 -529
  666. pycforge-0.16.2/pycforge/converter/lowering.py +0 -1599
  667. pycforge-0.16.2/pycforge/ide/__init__.py +0 -19
  668. pycforge-0.16.2/pycforge/ide/action_contract.py +0 -471
  669. pycforge-0.16.2/pycforge/ide/controller.py +0 -961
  670. pycforge-0.16.2/pycforge/ide/controller_conversion.py +0 -594
  671. pycforge-0.16.2/pycforge/ide/editor.py +0 -906
  672. pycforge-0.16.2/pycforge/ide/editor_commands_qt.py +0 -355
  673. pycforge-0.16.2/pycforge/ide/editor_sidebars.py +0 -236
  674. pycforge-0.16.2/pycforge/ide/find_replace.py +0 -539
  675. pycforge-0.16.2/pycforge/ide/icons.py +0 -105
  676. pycforge-0.16.2/pycforge/ide/model.py +0 -164
  677. pycforge-0.16.2/pycforge/ide/panels.py +0 -994
  678. pycforge-0.16.2/pycforge/ide/qt.py +0 -235
  679. pycforge-0.16.2/pycforge/ide/qt_about.py +0 -301
  680. pycforge-0.16.2/pycforge/ide/qt_actions.py +0 -491
  681. pycforge-0.16.2/pycforge/ide/qt_close.py +0 -209
  682. pycforge-0.16.2/pycforge/ide/qt_command_palette.py +0 -313
  683. pycforge-0.16.2/pycforge/ide/qt_contract.py +0 -255
  684. pycforge-0.16.2/pycforge/ide/qt_documents.py +0 -599
  685. pycforge-0.16.2/pycforge/ide/qt_editor_buffers.py +0 -113
  686. pycforge-0.16.2/pycforge/ide/qt_editor_settings.py +0 -186
  687. pycforge-0.16.2/pycforge/ide/qt_editor_surfaces.py +0 -124
  688. pycforge-0.16.2/pycforge/ide/qt_file_dialogs.py +0 -842
  689. pycforge-0.16.2/pycforge/ide/qt_forgelens.py +0 -272
  690. pycforge-0.16.2/pycforge/ide/qt_menus.py +0 -326
  691. pycforge-0.16.2/pycforge/ide/qt_projection.py +0 -570
  692. pycforge-0.16.2/pycforge/ide/qt_shell.py +0 -383
  693. pycforge-0.16.2/pycforge/ide/qt_shell_interactions.py +0 -348
  694. pycforge-0.16.2/pycforge/ide/qt_source_preview.py +0 -466
  695. pycforge-0.16.2/pycforge/ide/qt_state.py +0 -475
  696. pycforge-0.16.2/pycforge/ide/qt_toast.py +0 -69
  697. pycforge-0.16.2/pycforge/ide/qt_window_chrome.py +0 -577
  698. pycforge-0.16.2/pycforge/ide/qt_workspace_features.py +0 -402
  699. pycforge-0.16.2/pycforge/ide/qt_workspace_navigation.py +0 -212
  700. pycforge-0.16.2/pycforge/ide/qt_workspace_widgets.py +0 -276
  701. pycforge-0.16.2/pycforge/ide/resources/branding/github-profile.png +0 -0
  702. pycforge-0.16.2/pycforge/ide/resources/icons/about.svg +0 -1
  703. pycforge-0.16.2/pycforge/ide/resources/icons/brand-mark.svg +0 -1
  704. pycforge-0.16.2/pycforge/ide/resources/textures/blackened-steel.svg +0 -12
  705. pycforge-0.16.2/pycforge/ide/source_structure.py +0 -558
  706. pycforge-0.16.2/pycforge/ide/theme.py +0 -120
  707. pycforge-0.16.2/pycforge/ide/theme_steel_stylesheet.py +0 -533
  708. pycforge-0.16.2/pycforge/ide/theme_stylesheet.py +0 -598
  709. pycforge-0.16.2/pycforge/ide/theme_workspace_stylesheet.py +0 -176
  710. pycforge-0.16.2/pycforge/ide/visual_tokens.py +0 -143
  711. pycforge-0.16.2/pycforge/ide/workspace_session.py +0 -256
  712. pycforge-0.16.2/pycforge.egg-info/PKG-INFO +0 -301
  713. pycforge-0.16.2/pycforge.egg-info/SOURCES.txt +0 -260
  714. pycforge-0.16.2/pyproject.toml +0 -49
  715. {pycforge-0.16.2 → pycforge-1.0.2}/LICENSE +0 -0
  716. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/__init__.py +0 -0
  717. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/__main__.py +0 -0
  718. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/__init__.py +0 -0
  719. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/analysis/__init__.py +0 -0
  720. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/analysis/functions.py +0 -0
  721. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/analysis/symbols.py +0 -0
  722. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/c_output/__init__.py +0 -0
  723. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/c_output/conformance.py +0 -0
  724. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/c_output/renderer.py +0 -0
  725. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/conditional_regions/__init__.py +0 -0
  726. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/conditional_regions/analysis.py +0 -0
  727. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/conditional_regions/lowering.py +0 -0
  728. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/conditional_regions/model.py +0 -0
  729. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/conditional_regions/validation.py +0 -0
  730. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/contracts/__init__.py +0 -0
  731. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/contracts/configuration.py +0 -0
  732. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/contracts/identifiers.py +0 -0
  733. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/contracts/versions.py +0 -0
  734. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/core/__init__.py +0 -0
  735. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/core/artifact_io.py +0 -0
  736. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/core/cancellation.py +0 -0
  737. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/core/canonicalization.py +0 -0
  738. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/core/context.py +0 -0
  739. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/core/diagnostics.py +0 -0
  740. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/core/enums.py +0 -0
  741. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/core/fingerprint.py +0 -0
  742. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/core/pipeline.py +0 -0
  743. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/core/progress.py +0 -0
  744. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/core/request.py +0 -0
  745. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/core/resource_policy.py +0 -0
  746. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/core/result.py +0 -0
  747. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/core/serialization.py +0 -0
  748. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/core/stage.py +0 -0
  749. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/core/stage_artifact.py +0 -0
  750. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/core/stage_outcome.py +0 -0
  751. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/decision_trace/__init__.py +0 -0
  752. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/decision_trace/recorder.py +0 -0
  753. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/file_io/__init__.py +0 -0
  754. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/file_io/analysis.py +0 -0
  755. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/file_io/conformance.py +0 -0
  756. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/file_io/model.py +0 -0
  757. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/file_io/runtime.py +0 -0
  758. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/file_io/validation.py +0 -0
  759. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/frontend/__init__.py +0 -0
  760. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/frontend/normalizer.py +0 -0
  761. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/frontend/parser.py +0 -0
  762. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/frontend/source_document.py +0 -0
  763. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/frontend/stages.py +0 -0
  764. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/frontend/validation.py +0 -0
  765. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/io/__init__.py +0 -0
  766. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/io/atomic_writer.py +0 -0
  767. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/ir/__init__.py +0 -0
  768. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/ir/c_ir/__init__.py +0 -0
  769. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/ir/c_ir/builder.py +0 -0
  770. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/ir/c_ir/model.py +0 -0
  771. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/ir/c_ir/serialization.py +0 -0
  772. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/ir/c_ir/validation.py +0 -0
  773. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/ir/python_ir/__init__.py +0 -0
  774. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/ir/python_ir/nodes.py +0 -0
  775. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/keyword_calls/__init__.py +0 -0
  776. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/keyword_calls/analysis.py +0 -0
  777. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/keyword_calls/lowering.py +0 -0
  778. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/keyword_calls/model.py +0 -0
  779. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/keyword_calls/validation.py +0 -0
  780. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/keyword_only_calls/__init__.py +0 -0
  781. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/keyword_only_calls/analysis.py +0 -0
  782. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/keyword_only_calls/lowering.py +0 -0
  783. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/keyword_only_calls/model.py +0 -0
  784. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/keyword_only_calls/validation.py +0 -0
  785. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/loop_completion/__init__.py +0 -0
  786. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/loop_completion/analysis.py +0 -0
  787. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/loop_completion/lowering.py +0 -0
  788. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/loop_completion/model.py +0 -0
  789. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/loop_completion/validation.py +0 -0
  790. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/modules/__init__.py +0 -0
  791. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/modules/analysis.py +0 -0
  792. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/modules/lowering.py +0 -0
  793. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/modules/model.py +0 -0
  794. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/modules/stage.py +0 -0
  795. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/numeric_semantics/__init__.py +0 -0
  796. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/numeric_semantics/analysis.py +0 -0
  797. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/numeric_semantics/lowering.py +0 -0
  798. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/numeric_semantics/model.py +0 -0
  799. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/records/__init__.py +0 -0
  800. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/records/analysis.py +0 -0
  801. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/records/lowering.py +0 -0
  802. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/records/model.py +0 -0
  803. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/rules/__init__.py +0 -0
  804. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/scope_lifetimes/__init__.py +0 -0
  805. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/scope_lifetimes/analysis.py +0 -0
  806. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/scope_lifetimes/model.py +0 -0
  807. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/scope_lifetimes/validation.py +0 -0
  808. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/support_templates/__init__.py +0 -0
  809. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/support_templates/assembly.py +0 -0
  810. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/support_templates/factories.py +0 -0
  811. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/support_templates/model.py +0 -0
  812. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/support_templates/registry.py +0 -0
  813. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/telemetry/__init__.py +0 -0
  814. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/converter/telemetry/sink.py +0 -0
  815. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/__main__.py +0 -0
  816. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/_forgelens_builder.py +0 -0
  817. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/_forgelens_model.py +0 -0
  818. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/_worker_event_codec.py +0 -0
  819. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/_worker_protocol_json.py +0 -0
  820. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/_worker_protocol_types.py +0 -0
  821. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/_worker_request_codec.py +0 -0
  822. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/_worker_request_data.py +0 -0
  823. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/_worker_result_data.py +0 -0
  824. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/action_validation.py +0 -0
  825. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/command_palette.py +0 -0
  826. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/controller_io.py +0 -0
  827. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/editor_lexical.py +0 -0
  828. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/editor_markers.py +0 -0
  829. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/editor_syntax.py +0 -0
  830. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/forgelens.py +0 -0
  831. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/io_service.py +0 -0
  832. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/positions.py +0 -0
  833. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/process_worker.py +0 -0
  834. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/qt_open_queue.py +0 -0
  835. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/qt_workspace_observers.py +0 -0
  836. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/qt_workspace_panels.py +0 -0
  837. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/add-document.svg +0 -0
  838. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/bundle-search.svg +0 -0
  839. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/cancel.svg +0 -0
  840. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/check.svg +0 -0
  841. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/chevron-right.svg +0 -0
  842. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/close.svg +0 -0
  843. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/collapse-all.svg +0 -0
  844. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/command-palette.svg +0 -0
  845. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/convert.svg +0 -0
  846. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/copy.svg +0 -0
  847. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/cut.svg +0 -0
  848. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/decision-trace.svg +0 -0
  849. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/details.svg +0 -0
  850. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/diagnostics.svg +0 -0
  851. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/duplicate-line.svg +0 -0
  852. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/exit.svg +0 -0
  853. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/expand-all.svg +0 -0
  854. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/export.svg +0 -0
  855. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/find.svg +0 -0
  856. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/go-to-line.svg +0 -0
  857. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/go-to-output.svg +0 -0
  858. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/go-to-source.svg +0 -0
  859. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/history.svg +0 -0
  860. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/indent.svg +0 -0
  861. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/link-c.svg +0 -0
  862. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/mappings.svg +0 -0
  863. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/module.svg +0 -0
  864. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/move-down.svg +0 -0
  865. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/move-line-down.svg +0 -0
  866. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/move-line-up.svg +0 -0
  867. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/move-up.svg +0 -0
  868. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/next.svg +0 -0
  869. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/open.svg +0 -0
  870. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/outdent.svg +0 -0
  871. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/outline.svg +0 -0
  872. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/paste.svg +0 -0
  873. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/previous.svg +0 -0
  874. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/primary-module.svg +0 -0
  875. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/redo.svg +0 -0
  876. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/remove-document.svg +0 -0
  877. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/replace.svg +0 -0
  878. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/save-as.svg +0 -0
  879. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/save.svg +0 -0
  880. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/select-all.svg +0 -0
  881. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/settings.svg +0 -0
  882. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/show-c.svg +0 -0
  883. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/split-view.svg +0 -0
  884. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/summary.svg +0 -0
  885. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/telemetry.svg +0 -0
  886. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/toggle-comment.svg +0 -0
  887. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/toggle-fold.svg +0 -0
  888. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/undo.svg +0 -0
  889. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/resources/icons/whitespace.svg +0 -0
  890. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/revisions.py +0 -0
  891. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/search_service.py +0 -0
  892. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/session_history.py +0 -0
  893. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/source_editing.py +0 -0
  894. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/source_preview.py +0 -0
  895. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/source_structure_async.py +0 -0
  896. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/supervisor.py +0 -0
  897. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/worker_protocol.py +0 -0
  898. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/ide/workspace_search.py +0 -0
  899. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/laboratory/__init__.py +0 -0
  900. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/laboratory/audits.py +0 -0
  901. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/laboratory/checkpoint_e.py +0 -0
  902. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/laboratory/cli.py +0 -0
  903. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/laboratory/exit_codes.py +0 -0
  904. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/laboratory/keyword_audit.py +0 -0
  905. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge/laboratory/keyword_only_audit.py +0 -0
  906. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge.egg-info/dependency_links.txt +0 -0
  907. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge.egg-info/entry_points.txt +0 -0
  908. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge.egg-info/requires.txt +0 -0
  909. {pycforge-0.16.2 → pycforge-1.0.2}/pycforge.egg-info/top_level.txt +0 -0
  910. {pycforge-0.16.2 → pycforge-1.0.2}/setup.cfg +0 -0
@@ -0,0 +1,838 @@
1
+ # Changelog
2
+
3
+ ## 1.0.2 — Focused presentation and notification polish
4
+
5
+ Replaced the former release-contract-heavy README with a shorter public guide
6
+ centered on PyCForge's purpose, installation, upgrades, immediate desktop
7
+ launch, principal workspace features, Ting agent integration, built-in Help,
8
+ CLI/API access, and safety boundary. Added current full-workspace and Ting
9
+ feedback screenshots to the source distribution and PyPI description.
10
+
11
+ Made the top notification banner's SVG close control follow the active
12
+ information, success, warning, or error foreground color. Hover, focus, and
13
+ pressed states retain the same semantic background and border family, so the
14
+ control no longer appears detached from its message. No other workspace or
15
+ dialog presentation was changed.
16
+
17
+ Advanced the package and application version to 1.0.2. Converter schemas,
18
+ lowering, generated-C behavior, Ting shadow authority, workspace contracts,
19
+ and the authenticated 1.0.1 fixed-set rules remain unchanged.
20
+
21
+ ## 1.0.1 — Fixed sets and professional workspace continuity
22
+
23
+ Added a fail-closed fixed-set profile to the active Phase 16 base. Direct
24
+ function-local literals of 1–64 unique homogeneous integer, finite-float, or
25
+ Boolean elements lower to read-only automatic C arrays. Exact-representation
26
+ `in` and `not in` evaluate their searched expression once and use bounded
27
+ linear equality. New authenticated membership facts, 1.0.1 rule identities,
28
+ independent validation, conversion summary records, exact diagnostics, and
29
+ positive/negative tests cover declaration and lowering. Unsupported order,
30
+ hash-table, mutation, alias, and escape behavior remains outside the contract.
31
+
32
+ Added parser-authenticated Python function folding, Fold All and Unfold All
33
+ source controls, and subtle Python-only indent guides. Generated C remains a
34
+ plain immutable inspection surface. Large-source fold discovery now consumes
35
+ the existing authenticated background structure result; Fold All returns to
36
+ the event loop immediately and applies bounded regions only after exact
37
+ document/revision validation. Fold application touches only changed bounded
38
+ block lines, preventing the synchronous parser/block-scan freeze reported on
39
+ Windows.
40
+
41
+ Removed the desktop shell's synthetic permanent first document. A new window
42
+ may be genuinely empty; the first opened or created Python module becomes
43
+ primary automatically, and every tab—including the first or final restored
44
+ tab—can be closed. Closing the final tab persists an intentionally empty
45
+ restart session. Linked files that remain open at exit still reopen in their
46
+ prior order with the prior active file selected. Added an independent
47
+ **Clear Recent Files** action that never closes tabs, deletes files, or changes
48
+ the restart session. Long main-window titles now elide before the window
49
+ controls, and Find/Replace keeps Previous and Next in one compact group.
50
+
51
+ Replaced native dialog titlebars with reusable accessible PyCForge frameless
52
+ chrome across Help, About, startup, settings, file browsers, command palette,
53
+ go-to-line, guarded choices, restoration reporting, and Ting feedback. The
54
+ flat titlebar carries the canonical brand mark and an extensible icon-toolbar
55
+ host; resizable dialogs expose system and bounded manual resize paths.
56
+
57
+ Persisted the ordered set of linked saved Python files and active linked file.
58
+ Startup restores them sequentially under the 64-document ceiling and reports
59
+ every unavailable or unreadable path in a nonblocking selectable dialog.
60
+ Unsaved source text is not serialized.
61
+
62
+ Added a source-free, read-only Ting feedback terminal after converted and
63
+ rejected decisions. An overview and all six mandatory agent tabs expose exact
64
+ evidence, gaps, bounded matching metrics, and rulepack identities. The shadow
65
+ review has no authority over conversion and does not fabricate compiler or
66
+ differential evidence.
67
+
68
+ Updated all fourteen classified offline HTML Help pages and navigation search
69
+ metadata needed for the new conversion and workspace features. Advanced the
70
+ package and application identity to 1.0.1 while retaining the documented Phase
71
+ 16 base schemas and renderer.
72
+
73
+ Corrected the 1.0.1 desktop presentation after physical-review feedback.
74
+ Python source now defaults to 14 pt, generated C to 12 pt, Help body text to
75
+ 12 pt, and application controls to a 12 pt minimum. Presentation-settings
76
+ schema 3 removes the faulty schema-2 global-font projection and oversized
77
+ restored geometry while preserving compatible session data. Top-level windows
78
+ fit the current monitor work area under Windows display scaling. Function fold
79
+ markers are larger, Fold All and Unfold All are direct Edit-menu actions, the
80
+ Ting/About status buttons are matched and contained, menu-item hover tooltips
81
+ are disabled, and ordinary typing no longer rewrites the persistent status
82
+ message.
83
+
84
+ Completed a second physical-Windows typography correction without changing
85
+ the editor sizes or Help article typography. Ordinary non-editor controls now
86
+ use the exact menu font, including Help controls, file browsers, inspectors,
87
+ About, startup, and monospaced Ting feedback. The three workspace caption
88
+ bands use a deliberate compact 10 pt hierarchy and the Python header gives
89
+ adaptive space to both module identity and path text. The Open preview is decoupled
90
+ from the 14 pt source editor and uses compact menu-sized page geometry.
91
+ Transpilation Details always starts hidden and opens as a full-height review
92
+ mode instead of compressing the editor. Source/mapping activation returns to
93
+ the editor. Accepted code-font choices use a durable restart mirror; guarded
94
+ Save/Discard focus borders retain bottom clearance; QAction status tips cannot
95
+ enter the status bar. Help, About, and startup rasterize the
96
+ redesigned flat `brand-mark.svg` directly at the final logical size and device
97
+ pixel ratio, eliminating enlarged 24-pixel bitmap intermediates.
98
+
99
+ ## 0.16.3 — Complete in-app Help and workspace usability
100
+
101
+ Status: PyCForge 0.16.3 package release; active converter, rule-set, renderer,
102
+ runtime-policy, plan, C-IR, artifact, summary, trace, and result-envelope
103
+ contracts remain unchanged from the PyPI 0.16.2 package.
104
+
105
+ Added a professional, fully offline HTML Help dialog under the new **Help**
106
+ menu and **F1**. Fourteen editable HTML pages are classified through a
107
+ validated catalog, presented with persistent left navigation, and searched as
108
+ one global documentation set. They cover the entire cumulative conversion
109
+ surface, including typed functions, expressions,
110
+ conditionals, scalar scope publication, loops and loop `else`, containers,
111
+ records, direct/keyword calls, explicit module imports, bounded UTF-8 file
112
+ reading and writing, the generated-C file ABI and status codes, CLI/API use,
113
+ diagnostics, safety, limits, shortcuts, and active identities. The installed
114
+ application no longer relies on a PDF or an external repository for user help.
115
+
116
+ Replaced editor-only font sizing with one persisted 8–32 point workspace text
117
+ size. Direct **View** actions and `Ctrl+=`, `Ctrl+-`, and `Ctrl+0` now resize
118
+ menus, toolbars, dialogs, trees, diagnostics, Python, generated C, previews,
119
+ and Help together. Schema-1 editor preferences migrate into the application-
120
+ wide setting and changes synchronize immediately.
121
+
122
+ The custom Open/Save dialogs now remember per-mode geometry, columns,
123
+ directory, and—where applicable—the browser/preview splitter and last selected
124
+ Python file. Open never displays a restored preview unless its tree row is
125
+ visibly selected. The first **New Module** reuses a pristine initial `main.py`
126
+ placeholder, eliminating the accidental empty-main diagnostic while retaining
127
+ the converter's deliberate rejection of genuinely empty bundle modules.
128
+
129
+ Added Undo, Redo, Cut, Copy, and Paste to the main toolbar; enlarged module-tab
130
+ close targets; rebuilt status-bar ownership so left feedback stretches inside
131
+ the bar and right-side controls remain contained; and replaced stylesheet and
132
+ editor-rail gradients/texture backgrounds with a flat blackened-steel palette.
133
+
134
+ Package metadata now identifies PyPI as the authoritative distribution page.
135
+ The package version advances to 0.16.3 because published PyPI files are
136
+ immutable; the active converter contract remains exactly 0.16.0.
137
+ Workspace, action-registry, and visual-system presentation identities advance
138
+ to `pycforge-workspace/0.7`, `pycforge.action-registry/0.4`, and
139
+ `pycforge.visual-system/0.4`; persisted presentation settings advance to schema
140
+ `2` with bounded schema-1 font migration.
141
+
142
+ Added six deterministic Ting shadow-review agents for syntax, semantics,
143
+ ownership, lowering, verification, and typed capability/resource binding.
144
+ Their 34 embedded tests run without skips through a read-only source gate.
145
+ Proof-preserving pruning evaluates every registered role while using bounded
146
+ schema and equality indexes inside each rulepack. PyCForge ships only a
147
+ private execution runtime, authenticated registry, and precompiled Compact-IR.
148
+ The runtime retains the bounded `.ting` Compact-IR loader/parser and verifier.
149
+ Only the authoring-side RuleSpec source parser, compiler, writers, builders,
150
+ consoles, reference engine, history subsystem, and command entry points are
151
+ excluded from both public archives and retained separately under compiler
152
+ custody.
153
+
154
+ Added an accessible branded startup progress dialog driven only by completed
155
+ initialization work. It validates the vector catalogue, all offline Help
156
+ sources, and every packaged `.ting` artifact before constructing the
157
+ workspace. The dialog supports safe-boundary cancellation, presents bounded
158
+ startup errors, performs no network access, and uses the same flat visual
159
+ surface and canonical brand mark as the main window, Help, and About.
160
+
161
+ ## 0.16.2 — Evaluation hardening and motionless editing
162
+
163
+ Status: PyCForge 0.16.2 package release; active converter contracts,
164
+ generated-C identities, and the 0.16.0 Programmer's Conversion Guide remain
165
+ unchanged.
166
+
167
+ Repaired the frontend's virtual-EOF coordinate mapping so valid source converts
168
+ without a terminal newline or completely empty final line. The repair maps the
169
+ tokenizer's virtual final position to exact EOF without inserting or
170
+ normalizing text and preserves source bytes, newline records, document identity,
171
+ and authenticated hash. The `clamp` reproduction no longer falls through to
172
+ `PYC9001`.
173
+
174
+ Made normal typing visually motionless across the toolbar Convert action,
175
+ conversion-status labels, the generated-C stale/last-complete label, and Python
176
+ source breadcrumbs. State updates now occur in place, while progress animation
177
+ is limited to actual conversion work. Corrected Python-editor point-size loading
178
+ so the chosen value survives restart and applies to both current and future
179
+ split source panes.
180
+
181
+ Added a compact, menu-preserving frameless shell and reduced toolbar and notice
182
+ height without shrinking their established text. Replaced native tree icons
183
+ with PyCForge dark-theme iconography, bounded the Open dialog's initial height,
184
+ and moved Previous/Next navigation above the preview page. Reworked About into
185
+ a wider categorized view with version and contract information, end-of-file and
186
+ current/stale-state explanations, Details and split-view cues, and no
187
+ personal-name text. The existing toolbar action remains the single Show/Hide
188
+ control for Transpilation Details.
189
+
190
+ Documented fresh and explicit-upgrade commands for both POSIX environments and
191
+ the Windows `py` launcher. Package version 0.16.2 retains the 0.16.0 converter,
192
+ rule-set, renderer, runtime-policy, plan, C IR, generated-artifact, summary, and
193
+ decision-trace identities; workspace and settings identities also remain
194
+ unchanged.
195
+
196
+ ## 0.16.1 — ForgeLens and blackened-steel workspace
197
+
198
+ Status: PyCForge 0.16.1 release; converter contracts, generated C, and the
199
+ 0.16.0 Programmer's Conversion Guide remain unchanged.
200
+
201
+ Added optional, default-on ForgeLens cross-highlighting from authenticated
202
+ Python↔C mappings. It follows exact focused selections without taking focus or
203
+ switching documents, persists its Editor Settings toggle, clears safely across
204
+ document and lifecycle changes, and fails closed on excessive mapping fanout.
205
+ Position indexing now handles Qt newline normalization, query scans stop as
206
+ soon as their ordered interval cannot match, endpoint storage is compact, and
207
+ unchanged marker projections are not repainted.
208
+
209
+ Introduced a coordinated blackened brushed-steel workspace with restrained
210
+ focus and selection colors, semantic primary/danger states, coherent menus and
211
+ dialogs, and the PyCForge brand mark in About. Replaced native file pickers
212
+ with bounded custom browsers: Open renders readable Python pages in memory with
213
+ Previous/Next controls, while Save remains preview-free. Hardened dialog error
214
+ recovery, path elision, accessibility descriptions, tree sizing, and preview
215
+ retirement behavior.
216
+
217
+ Added the concise five-feature UI roadmap and refreshed the public README with
218
+ an immutable, code-rich 1600×1000 workspace screenshot. The complete package
219
+ still uses the active Phase 16 converter identities at 0.16.0.
220
+
221
+ ## 0.16.0 — Scope, loop completion, and bounded UTF-8 file I/O
222
+
223
+ Status: PyCForge 0.16.0 release; explicit Phase 14A-14D requests and all
224
+ historical 0.15.3 workspace custody remain preserved.
225
+
226
+ ### Selective scalar scope lifetimes
227
+
228
+ Added immutable, resource-bounded, independently reconstructed
229
+ `fact-table/0.16-scope-lifetimes` proof. Scalar locals first assigned in
230
+ exhaustive conditional branches can now lower to one uninitialized C
231
+ function-entry declaration plus source-ordered branch assignments when every
232
+ reachable continuation proves initialization before use. Nested conditionals
233
+ and the surviving branch after a sibling return are reachability-aware.
234
+
235
+ The profile remains deliberately selective: loops, containers, records,
236
+ closures, globals/nonlocals, missing branch coverage, read-before-definition,
237
+ unknown or incompatible categories, and malformed or over-budget evidence fail
238
+ closed. Already-supported unrelated constructs remain independent.
239
+
240
+ ### Loop completion and safe `range`
241
+
242
+ Added exact Python `else` behavior for admitted `while`, positional-`range`,
243
+ and fixed list/tuple/dictionary loops. Natural completion and zero iterations
244
+ run the else suite; only a source `break` owned by that loop suppresses it.
245
+ Nested breaks do not suppress an outer else, `continue` preserves completion,
246
+ and `return` bypasses it. One deterministic Boolean flag is emitted only when
247
+ the loop owns a break, with clears immediately before those exact breaks.
248
+
249
+ Added a structured pre-addition guard for signed-64 range induction. An update
250
+ that would cross `INT64_MAX` or `INT64_MIN` selects the staged stop value
251
+ instead, preserving exhaustion without undefined C signed overflow.
252
+
253
+ ### Closed bounded UTF-8 file profile
254
+
255
+ Added one exact direct function-body context profile:
256
+ `with open(path, "r" or "w", encoding="utf-8", newline="") as fresh_handle`
257
+ with one direct read transfer or one direct write of an already-proved string
258
+ name or string literal whose count is discarded. Effectful write expressions
259
+ reject with `PYC3905` because helper-internal open cannot preserve context-entry
260
+ before body-evaluation order.
261
+ Reads default to 1,048,576 bytes, have a hard 16,777,216-byte ceiling, reject
262
+ embedded NUL and non-RFC-3629 UTF-8, close exactly once, and transfer ownership
263
+ only after successful close. Writes use borrowed text, require an exact byte
264
+ count, close exactly once, and propagate failure. Handle aliasing, rebinding,
265
+ escape, post-region use, explicit close, unsupported open shapes, and source
266
+ calls into file-effect functions reject with the `PYC3901`–`PYC3908` family.
267
+
268
+ Registered helpers are `pycf.file.read_all_utf8_bounded@1.0.0` and
269
+ `pycf.file.write_utf8_exact@1.0.0`, with registry-closed transitive UTF-8
270
+ validation. Generated file-effect entry points receive a hidden final,
271
+ required non-null `int64_t *` status parameter in caller-owned storage. Stable
272
+ codes are 0 success, 1 open, 2 allocation, 3 read, 4 limit, 5 embedded NUL,
273
+ 6 invalid UTF-8, 7 close, and 8 write. A successful read returns a unique
274
+ caller-owned `malloc` buffer that the external caller must `free`.
275
+ Every file-effect entry point null-checks its status pointer and then initializes
276
+ it to success before any source-controlled early return or evaluation; helper
277
+ failures overwrite that value with their stable code.
278
+
279
+ Recorded the external C-string preconditions explicitly: paths must be
280
+ non-null, NUL-terminated valid UTF-8; borrowed write text has the same
281
+ preconditions and no embedded NUL. The helpers do not runtime-validate pointer
282
+ validity, path UTF-8/NUL properties, or hidden write bytes after the first
283
+ terminator. Compile-time path/write literals containing NUL reject with
284
+ `PYC3903`/`PYC3905`; read-content statuses 5 and 6 do not claim input-string
285
+ validation.
286
+
287
+ ### Contracts and custody
288
+
289
+ Advanced the active converter to `0.16.0` with
290
+ `phase16-scope-loop-file-v0.16.0`, `c-renderer-v0.16.0`,
291
+ `conversion-plan/0.16.0`, `c-ir/0.16.0`, `generated-c/0.16.0`, and matching
292
+ 0.16.0 summary/trace identities. The result envelope remains `0.5`. Phase 16
293
+ adds closed structured pointer, cast, conditional-expression, null, and C
294
+ library-intrinsic C IR forms needed by the proved runtime. Historical Phase 14D
295
+ schemas, rendering, diagnostics, output bytes, hashes, rejections, and helper
296
+ manifests remain unchanged under explicit `0.14.3` requests.
297
+
298
+ Conversion never executes source Python and never opens a path selected by the
299
+ source. PyCForge never compiles, links, loads, or runs generated C. File I/O,
300
+ status writes, allocation, ownership transfer, and caller `free` occur only if
301
+ an external party separately builds and runs the generated C.
302
+
303
+ The authenticated desktop worker protocol is now
304
+ `pycforge.worker-protocol/0.2`; it preserves the active runtime-policy identity
305
+ and all expanded resource fields across the GUI process boundary. Added a
306
+ reproducible 35-page 0.16.0 Programmer's Conversion Guide with 22 live-converter
307
+ examples, deterministic PDF reconstruction, and release-asset verification.
308
+
309
+ ## 0.15.3 — Workspace usability and PySide6 transition
310
+
311
+ Status: release candidate; converter semantics remain sealed at `0.14.3`.
312
+
313
+ Migrated the desktop application from PyQt5/Qt 5 to PySide6/Qt 6 and made
314
+ `PySide6>=6.8,<7` the single required GUI binding. Updated native actions,
315
+ signals, dialogs, input events, high-DPI behavior, CI, packaging checks, and
316
+ clean-install smoke coverage for Qt 6.
317
+
318
+ Added a bounded, persisted **Edit → Editor Settings…** control for the text
319
+ size of both synchronized Python source views. The setting accepts 8–48 points,
320
+ updates tab stops and editor side areas immediately, survives shared-document
321
+ rebinding, and leaves the generated-C viewer unchanged.
322
+
323
+ Added undoable Python auto-indentation on Enter. Existing leading whitespace
324
+ is preserved and genuine suite-opening colons add four spaces; colons inside
325
+ strings, comments, and open bracket expressions do not trigger an extra level.
326
+
327
+ Removed passive source-mapping backgrounds and underlines from generated C.
328
+ Mapping records, the overview rail, activation, and source/output navigation
329
+ remain available, while the generated-C text surface remains read-only and
330
+ explicit-save-only.
331
+
332
+ Advanced the workspace contract to `pycforge-workspace/0.6`, the action
333
+ registry to `pycforge.action-registry/0.3`, and the visual system to
334
+ `pycforge.visual-system/0.3`. Presentation settings remain schema `1`, the
335
+ worker protocol remains `pycforge.worker-protocol/0.1`, and the complete
336
+ converter subtree remains unchanged at `0.14.3`.
337
+
338
+ ## 0.15.2 — Phase 15C IDE-grade authoring and inspection workspace
339
+
340
+ Status: promoted and sealed; Phase 15D remains unopened.
341
+
342
+ Prepared the first public PyPI distribution without changing the
343
+ converter contract. PyQt5 is now a mandatory runtime dependency of the base
344
+ package, so an ordinary `pip install pycforge` installs the desktop application
345
+ and both `pycforge` and `pycforge-workspace` entry points. Removed the obsolete
346
+ `workspace` extra, added PyPI long-description and project metadata, corrected
347
+ the command-line examples, and added clean-build, clean-install, offscreen Qt,
348
+ release-artifact and Trusted Publishing gates.
349
+
350
+ Established the public source license as `GPL-3.0-only`, compatible with the
351
+ GPL PyPI distribution of PyQt5, and included the complete license text in the
352
+ source and package metadata.
353
+
354
+ Advanced the package to `0.15.2`, the workspace contract to
355
+ `pycforge-workspace/0.5`, the action registry to
356
+ `pycforge.action-registry/0.2`, and the visual system to
357
+ `pycforge.visual-system/0.2`. The converter remains sealed at `0.14.3`, the
358
+ worker protocol remains `pycforge.worker-protocol/0.1`, and presentation
359
+ settings remain schema `1`.
360
+
361
+ Added identifier-only document-tab and split-pane session state, with at most
362
+ two synchronized Python source panes. Added bounded undoable source operations
363
+ for line duplication, line movement, indentation, outdentation, and Python
364
+ comment toggling, together with go-to-line, whitespace visibility, and source
365
+ fold controls.
366
+
367
+ Added cancellable latest-wins source-structure analysis for already-open Python
368
+ text. The normalized outline and breadcrumb projection is parent-linked and
369
+ bounded by symbol count, depth, name length, and source-text budgets. Invalid
370
+ syntax remains inert and cannot retire valid structure for unrelated open
371
+ documents.
372
+
373
+ Added deterministic literal bundle search across the explicit open
374
+ `SourceBundle`, with immutable path-free requests, exact Python and UTF-16
375
+ positions, bounded previews, a global 5,000-match cap, and stale-generation
376
+ suppression. No host directory or project discovery was introduced.
377
+
378
+ Added a bounded command palette that projects enabled and visible static
379
+ registry actions without retaining handlers or adding a free-form command
380
+ execution surface. Added payload-free session transpilation history capped at
381
+ 64 terminal records.
382
+
383
+ Expanded the declarative command system to 48 actions, five persistent main
384
+ menus, and eleven context surfaces. Added the Navigate menu, source-authoring
385
+ commands, document-tab, bundle-search, history, text-input, and read-only-text
386
+ contexts while preserving the exact read-only generated-C command allowlist and
387
+ single-owner persistent `QAction` construction.
388
+
389
+ Expanded the vector catalogue from 41 to 55 safe SVG icons and extended the
390
+ shared workspace stylesheet for document tabs, split views, breadcrumbs,
391
+ outline, bundle-search results, history, and command-palette presentation.
392
+
393
+ Preserved the Phase 15A spawned-worker model, one-active/one-latest scheduling,
394
+ bounded cancellation, immutable revision and fingerprint authentication,
395
+ stale-result suppression, off-GUI file and search work, and incremental
396
+ generated-C projection. Python remains the only editable code surface.
397
+
398
+ Recorded current-release real PyQt evidence on the offscreen QPA backend
399
+ using Python 3.12.13, PyQt 5.15.11, Qt build 5.15.14, and Qt runtime 5.15.19.
400
+ One `QApplication` ran 18 focused workspace cases with zero failures, errors,
401
+ or skips. A 250,113-character source constructed the window in 0.054 seconds,
402
+ reached the first event turn in 0.0103 seconds, and produced 110 timer ticks at
403
+ 0.01-second intervals during 1.201 seconds of isolated transpilation. Large-file
404
+ mode detached the syntax highlighter while preserving the shared editor buffer;
405
+ shutdown left zero new PyCForge threads and zero worker leaks. A small
406
+ end-to-end workspace conversion completed in 0.408 seconds as supporting
407
+ evidence.
408
+
409
+ Authenticated, assigned the canonical validation report and release
410
+ fingerprint, and built and validated the Phase 15C milestone source archive,
411
+ pure-Python wheel, handoff, package report, and checksum records. These
412
+ artifacts establish Phase 15C release custody, not the wider Phase 15D
413
+ distribution and platform gate.
414
+
415
+ PyCForge remains a deterministic Python-to-C source transpiler. It does not
416
+ compile, assemble, link, load, run, execute, debug, profile, deploy, or invoke
417
+ generated C or a C toolchain.
418
+
419
+ The real offscreen widget evidence is not visible-platform certification.
420
+ Visible Windows 11/Linux rendering, physical display scaling, and
421
+ assistive-technology validation remain Phase 15D gates.
422
+
423
+ ## 0.15.1 — Phase 15B application shell and visual system
424
+
425
+ Status: implemented and validated within the available supporting scope.
426
+
427
+ Advanced the workspace contract to `pycforge-workspace/0.4` and introduced the
428
+ import-safe `pycforge.action-registry/0.1`. Every persistent application command
429
+ now has one declarative authority for its stable ID, label, mnemonic, SVG icon,
430
+ shortcut, tooltip, status explanation, accessible name, checkability, tone, and
431
+ allowed surfaces. The Qt adapter creates each persistent `QAction` once and
432
+ shares it across menus, toolbars, context surfaces, and bounded dynamic entries.
433
+
434
+ Added custom gradient/icon File, Edit, View, and Transpile menus and declared
435
+ context menus for Python source, read-only generated C, the Source Bundle
436
+ navigator, diagnostics, mappings, conversion summary, decision trace, and
437
+ telemetry. The custom presentation remains native-backed by `QMenu` and
438
+ `QAction`, preserving keyboard traversal, mnemonics, shortcut columns, checked
439
+ state, focus return, Escape dismissal, assistive exposure, submenu behavior,
440
+ and screen-edge placement. Generated C uses an explicit read-only command
441
+ allowlist.
442
+
443
+ Introduced `pycforge.visual-system/0.1` with cohesive semantic graphite
444
+ surfaces, layered gradients, high-contrast text, blue and violet focus accents,
445
+ a restrained warm transpilation accent, and explicit success, warning, error,
446
+ and danger treatments. Expanded professional self-contained SVG iconography
447
+ uses logical dimensions and excludes raster payloads, embedded data, remote
448
+ references, fixed physical sizing, scripts, and font-glyph dependencies.
449
+
450
+ Added high-DPI and accessibility foundations: high-DPI scaling before
451
+ application construction, logical icon sizing, stable menu accessible names,
452
+ visible tooltips and accessible names for icon-only controls, visible keyboard
453
+ focus, and non-color-only state treatment. The interface has no animation and
454
+ is reduced-motion safe by construction.
455
+
456
+ Removed the legacy presentation-namespace migration and compatibility surface.
457
+ Current source, settings, menus, toolbars, tests, evidence, and distribution
458
+ use PyCForge identity exclusively. Original pre-migration bytes remain
459
+ authoritative in the authenticated Phase 15A archive.
460
+
461
+ Preserved all Phase 15A responsiveness and isolation guarantees: spawned
462
+ conversion, one-active/one-latest scheduling, cooperative and hard
463
+ cancellation, immutable revision authentication, stale-result suppression,
464
+ off-GUI file I/O and search, bounded editor projections, incremental generated-C
465
+ population, and exact Save C authority.
466
+
467
+ Bounded the structured detail inspectors with an iterative cycle-safe
468
+ projection limited to 1,024 nodes, 16 levels, 256 children per container, and
469
+ 2,048 characters per value. Corrected scroll-area context placement, made
470
+ uncommitted identity edits immediately stale and unsavable as C, and suppressed
471
+ cancellation-pending diagnostics as non-current.
472
+
473
+ Hardened release custody around a descriptor-bound, size-bounded source
474
+ snapshot and a validation-subject digest that is checked against the exact
475
+ packaged bytes. Packaging now pins its production environment, compares
476
+ duplicate wheel and normalized-source builds, inspects and smokes the sealed
477
+ wheel payload, rejects noncanonical validation JSON, and durably publishes the
478
+ seven-artifact directory only after the final vocabulary and checksum graph
479
+ passes.
480
+
481
+ The package is `0.15.1`; the converter remains sealed at `0.14.3`, the worker
482
+ protocol remains `pycforge.worker-protocol/0.1`, and presentation settings
483
+ remain schema `1`. PyCForge remains a deterministic Python-to-C source
484
+ transpiler. No C compiler, linker, loader, runtime execution, debugger,
485
+ terminal, toolchain, project explorer, plugin system, or generated-C editor was
486
+ added.
487
+
488
+ PyQt5 is unavailable on the validation host, so Phase 15B evidence is
489
+ supporting source, static, headless, registry, icon, and optional-widget
490
+ evidence only. Visible Windows 11/Linux rendering, real display scaling, and
491
+ assistive-technology validation remain Phase 15D gates. Phase 15C and Phase 15D
492
+ remain unopened.
493
+
494
+ Final discovery runs 750 tests: 734 pass, 16 are expected skips, and none fail.
495
+ Eleven skips require unavailable PyQt5 widgets; five require unavailable older
496
+ optional custody artifacts.
497
+
498
+ ## 0.15.0 — Phase 15A responsiveness and isolation
499
+
500
+ Status: promoted and sealed.
501
+
502
+ Replaced workspace in-process conversion with a spawn-only process supervisor.
503
+ The bounded `pycforge.worker-protocol/0.1` uses canonical JSON over byte-only
504
+ connections and validates generation, bundle, transport, request, artifact,
505
+ mapping, and output identities before publication. Scheduling is exactly one
506
+ active plus one replaceable latest pending request.
507
+
508
+ Added cooperative cancellation with a 750 ms grace, hard termination and
509
+ two-second reclamation, latest-pending start bounds, non-blocking close, and
510
+ recoverable startup, crash, malformed/oversized IPC, broken-pipe, and worker
511
+ resource-exhaustion handling. Canceled, failed, stale, superseded, partial, or
512
+ mismatched work cannot publish C or replace last-known-good C.
513
+
514
+ Added immutable off-GUI revision/index services with cached UTF-8 and UTF-16
515
+ position facts. Convert and Save C remain disabled until the latest revision
516
+ authenticates. Moved linked-file reads, hashes, observations, and guarded atomic
517
+ writes to bounded daemon workers; an in-flight stale Save C fails before atomic
518
+ replacement.
519
+
520
+ Added debounced latest-wins literal search with an exact total and a 5,000-range
521
+ projection cap. Added automatic large-file editor mode, bounded syntax/bracket
522
+ work, marker and overview caps, viewport-focused selections, incremental 32 KiB
523
+ generated-C projection, and deferred hidden output/detail work. Source edits
524
+ are coalesced before proportional controller synchronization.
525
+
526
+ Validated direct-versus-isolated serialized-result equality, hard-cancel and
527
+ failure containment, maximum-envelope revision/search/index behavior, injected
528
+ slow file I/O, and 100 edit/convert/cancel cycles without stale publication,
529
+ deadlock, crash, obsolete pending work, or orphan processes.
530
+
531
+ Advanced the package to `0.15.0` and workspace contract to
532
+ `pycforge-workspace/0.3`. The complete converter subtree and every converter
533
+ contract remain sealed at `0.14.3`.
534
+
535
+ PyCForge remains a Python-to-C source transpiler. No compiler, linker, loader,
536
+ generated-C executor, runner, debugger, terminal, toolchain, plugin,
537
+ project-explorer, host-discovery, or generated-C editor was added. Phase 15B,
538
+ 15C, and 15D remain unopened; visible Windows 11/Linux PyQt and accessibility
539
+ claims are reserved for Phase 15D.
540
+
541
+ ## 0.14.4 — Hardening Checkpoint E
542
+
543
+ Status: promoted and sealed.
544
+
545
+ Completed the roadmap's post-Phase-14 full-subset architecture review,
546
+ deterministic full-supported-subset fuzz and metamorphic gate, and documentation
547
+ and 69-entry feature-matrix reconciliation. No Python construct, C IR shape,
548
+ helper, diagnostic, conversion policy, public converter schema, or generated-C
549
+ style was added or changed.
550
+
551
+ Separated the package identity (`0.14.4`) from the sealed deterministic
552
+ converter contract identity (`0.14.3`). Golden output, serialized results,
553
+ facts, RulePlans, summaries, traces, telemetry, diagnostics, mappings, and
554
+ fingerprints remain Phase 14D values.
555
+
556
+ Corrected the active desktop identity to PyCForge across front-facing titles,
557
+ accessibility names, theme exports, and the settings namespace. Added a bounded,
558
+ non-destructive migration for allow-listed predecessor presentation settings
559
+ and retained non-exported compatibility aliases only for sealed historical
560
+ validators.
561
+
562
+ Established `pycforge-workspace/0.2` and a binding workspace-quality addendum.
563
+ The addendum assigns the requested process-isolated conversion supervisor,
564
+ maximum-input responsiveness, professional IDE-grade authoring and inspection,
565
+ custom gradient/icon main and context menus, accessibility, high-DPI, and real
566
+ Windows 11/Linux PyQt gates to Phase 15. Checkpoint E does not claim those
567
+ future gates or open Phase 15.
568
+
569
+ PyCForge remains a Python-to-C source transpiler. It does not compile, link,
570
+ load, run, execute, debug, benchmark, or otherwise invoke generated C or a C
571
+ toolchain.
572
+
573
+ Promotion executes all 69 frozen feature-matrix entries plus the unlisted
574
+ default, with 37 supported witnesses converted and 33 boundary witnesses
575
+ rejected without mismatch. The seeded hardening corpus contains 16 fixed and
576
+ 64 generated cases, four per promoted family, and all 80 match the
577
+ authenticated Phase 14D predecessor byte-for-byte.
578
+
579
+ Final validation discovers 589 tests: 572 pass, 17 are expected skips, and
580
+ zero fail. The focused Checkpoint E set passes 46 of 46, and every cumulative
581
+ source-only audit passes. Reproducible wheel and normalized source-archive
582
+ builds are byte-identical; isolated wheel and extracted-source smokes pass.
583
+ The wheel contains both PyCForge entry points, exactly 17 SVG assets, and no
584
+ native binaries.
585
+
586
+ ## 0.14.3 — Phase 14D exact required keyword-only calls
587
+
588
+ Status: promoted and sealed.
589
+
590
+ Added one exact source-only declaration and call profile for required
591
+ keyword-only parameters on already-resolved direct source functions. An admitted
592
+ function may have existing required positional-only and positional-or-keyword
593
+ parameters followed by one or more exactly annotated required keyword-only
594
+ parameters. Every `kw_defaults` entry is null; positional defaults,
595
+ keyword-only defaults, `*args`, and `**kwargs` remain rejected.
596
+
597
+ Ordinary positional actuals bind only positional-capable formals. Explicit named
598
+ actuals may bind unbound positional-or-keyword or required keyword-only formals.
599
+ Every required formal is covered exactly once with an exact category and
600
+ representation match. Explicit values stage once in Python source order; only
601
+ pure temporary references are arranged in full formal order for the existing
602
+ structured `CCallExpr`. No runtime binder, `TypeError` channel, default
603
+ evaluation, coercion, allocation, ownership transfer, or cleanup model was
604
+ added.
605
+
606
+ Added complete positive and negative `keyword-only-call-binding-facts` under
607
+ `fact-table/0.14.3` and the helper-free
608
+ `phase14.keyword_only_call.exact_binding@0.14.3` RulePlan. The lowering shape is
609
+ `source-order-actual-temporaries-formal-order-references-v1`. Independent
610
+ validation reconstructs declaration kind, target, name binding, coverage,
611
+ categories, source/formal orders, C parameter order, and exact plan
612
+ correspondence before lowering.
613
+ Required-keyword-only declarations remain in the existing function-signature
614
+ facts without changing the serialized `ParameterFact` shape. Affected existing
615
+ `FunctionDef` RulePlans gain explicit keyword-only parameter and
616
+ C-interface-mode-erasure facts and obligations, and independent validation
617
+ covers admitted declarations even when they have no call site.
618
+
619
+ No new source diagnostic code is required. `PYC2904` retains missing coverage
620
+ and excess positional arity, `PYC2905` exact representation mismatch, `PYC2910`
621
+ unpacking and excluded call shapes, and `PYC2912` exact name-binding failures.
622
+ Under active 0.14.3 identities `PYC2911` continues to reject defaults,
623
+ defaulted keyword-only parameters, variadics, and keyword-only declarations
624
+ outside the exact required profile; it no longer rejects an otherwise eligible
625
+ required keyword-only declaration solely because `kwonlyargs` is nonempty.
626
+ Historical 0.14.2 diagnostics remain unchanged.
627
+
628
+ Advanced the active rule set to
629
+ `phase14-required-keyword-only-calls-v0.14.3`, renderer to
630
+ `c-renderer-v0.14.3`, and conversion-plan, C IR, generated-C, summary, and
631
+ decision-trace envelopes to 0.14.3. SourceBundle 0.2, Python IR 0.4, result
632
+ serialization 0.5, target and semantic policies, the helper registry, and all
633
+ container/module/record/numeric/conditional policies remain frozen.
634
+
635
+ Explicit 0.14.2 and earlier requests retain their exact facts, plans,
636
+ diagnostics, generated-C bytes, and fingerprints. Under active 0.14.3
637
+ identities, sources selecting no Phase 14D declaration or call behavior retain
638
+ Phase 14C generated-C bytes and output fingerprints. Required keyword-only
639
+ support adds no C IR syntax kind, renderer grammar, helper, host discovery, or
640
+ toolchain surface. Generated C remains source-validated only and is not
641
+ compiled, linked, loaded, or executed. Defaults, variadics, unpacking, dynamic
642
+ targets, methods, recursion, exceptions, closures, generators, async behavior,
643
+ and every neighboring Phase 14 family remain excluded. Phase 15 has not
644
+ started.
645
+
646
+ Promotion passed 539 discovered tests: 524 passed, 15 skipped, and zero failed.
647
+ The skips are exactly 10 for unavailable PyQt5 and five for unavailable older
648
+ custody artifacts. The focused Phase 14D gate passed 65 of 65 tests. Every
649
+ active cumulative audit passed, including the required-keyword-only and
650
+ Phase 14D transition audits.
651
+
652
+ Two fixed-epoch builds produced the same 340,054-byte
653
+ `pycforge-0.14.3-py3-none-any.whl`, SHA-256
654
+ `c0dd0c0ed79131daa5af815a8a9bb096b9f955c9c617ec0b8eb6a10c69d27b7f`.
655
+ The wheel archive and `RECORD` each account for 132 members: 17 SVG assets and
656
+ zero native-code members. Two normalized source-archive builds were likewise
657
+ byte-identical. The promoted converter subtree SHA-256 is
658
+ `74b32c25e40af3398dd46288941812ce7ad87f0d4b72fec3d3bd786cc1b8f3a8`.
659
+
660
+ Release validation remained source-only: no gate compiled, linked, loaded, or
661
+ executed generated C. No new actual PyQt5 widget or Windows 11 execution is
662
+ claimed. Historical opening records remain preserved, and Phase 15 has not
663
+ started.
664
+
665
+ ## 0.14.2 — Phase 14C direct exact keyword calls
666
+
667
+ Status: promoted and sealed.
668
+
669
+ Added one closed compile-time binding profile for explicit keyword arguments on
670
+ already-resolved direct source-function calls. Calls may use a leading ordinary
671
+ positional prefix followed by one or more explicit named keywords. Every
672
+ required formal is bound exactly once, positional-only formals remain
673
+ positional-only, and actual/formal categories must match exactly. Same-module
674
+ and existing explicit cross-module source-function bindings are eligible;
675
+ dynamic targets, callable values, methods, defaults, keyword-only parameters,
676
+ variadics, `*`/`**` unpacking, recursion, `range` keywords, and record-
677
+ constructor keywords remain excluded.
678
+
679
+ Added independent keyword-call analysis and reconstruction,
680
+ `keyword-call-binding-facts` under `fact-table/0.14.2`, and the helper-free
681
+ `phase14.keyword_call.exact_binding@0.14.2` RulePlan. Argument values are staged
682
+ left to right and once in Python source order, then pure temporary references
683
+ are arranged in formal ordinal order for the existing structured `CCallExpr`.
684
+ No C IR node kind, renderer grammar, helper, runtime binder, failure channel,
685
+ allocation, ownership transfer, or cleanup model was added.
686
+
687
+ Added `PYC2912` for exact static name-binding failures: unknown keyword names,
688
+ positional-only names used as keywords, positional/keyword collisions, and
689
+ duplicate keywords. `PYC2910` remains the boundary for `*`/`**`, null keyword
690
+ names, unpacking, and other excluded keyword shapes. Existing target,
691
+ declaration, arity, category, record, `range`, and recursion diagnostics retain
692
+ precedence.
693
+
694
+ Advanced the active rule set, renderer, conversion plan, C IR, generated-C,
695
+ summary, and trace envelopes to 0.14.2. SourceBundle 0.2, Python IR 0.4, result
696
+ serialization 0.5, all public policies, the helper registry, Phase 14A numeric
697
+ facts/helpers, and Phase 14B `fact-table/0.14.1` conditional facts and RulePlans
698
+ remain unchanged. Explicit 0.14.1 requests retain their historical keyword
699
+ rejection and artifact behavior; active sources selecting no 14C call retain
700
+ predecessor generated-C bytes and output fingerprints.
701
+
702
+ Promotion authenticated the sealed Phase 14B source archive and wheel, passed
703
+ the cumulative suite and audits including the keyword and Phase 14/14B/14C
704
+ transition audits, sealed deterministic wheel and source-archive builds, and
705
+ passed isolated package validation. All release validation remained source-only;
706
+ generated C was not compiled, linked, loaded, or executed. PyQt5 was unavailable
707
+ in the release environment, so no new widget execution is claimed and sealed
708
+ offscreen-widget evidence remains preserved. Windows 11 execution is not
709
+ claimed. Phase 14D and Phase 15 have not started.
710
+
711
+ ## 0.14.1 — Phase 14B conditional temporary regions
712
+
713
+ Status: Phase 14B promoted and sealed.
714
+
715
+ Added exact conditional placement for statement-producing temporaries belonging
716
+ to expressions already supported by the cumulative scalar subset. Boolean
717
+ `and`/`or` expressions now use an initialized Boolean result and flat guarded
718
+ assignments. Later operands of chained comparisons use guarded materialization
719
+ and rolling middle values, preserving left-to-right, exactly-once evaluation
720
+ without eagerly evaluating skipped operands.
721
+
722
+ Added independent conditional-region analysis and validation,
723
+ `fact-table/0.14.1` conditional facts, two 0.14.1 RulePlan families, and active
724
+ `conversion-plan/0.14.1`, `c-ir/0.14.1`, `generated-c/0.14.1`, summary, trace,
725
+ rule-set, and renderer identities. No Python syntax, primitive operation,
726
+ public policy, helper, runtime failure channel, allocation, ownership, cleanup,
727
+ or C IR node kind was added.
728
+
729
+ Preserved the sealed Phase 14A numeric policy and helper registry exactly.
730
+ Explicit 0.14.0 configuration retains its historical artifacts and placement
731
+ rejections; active sources that select no conditional region retain predecessor
732
+ generated-C bytes and output fingerprints. General exceptions, heap objects,
733
+ dynamic dispatch, closures, generators, async behavior, context cleanup, and
734
+ the broader class model remain excluded.
735
+
736
+ ## 0.14.0 — Phase 14A bounded integer floor arithmetic
737
+
738
+ Status: Phase 14A sealed.
739
+
740
+ Added exact integer `//` and `%` for existing integer-like expressions when
741
+ the divisor is a direct signed integer literal in
742
+ `[-9223372036854775807, -2]` or `[1, 9223372036854775807]`. Zero, negative one,
743
+ `INT64_MIN`, Boolean, floating, dynamic, folded, calculated, and out-of-range
744
+ divisors reject deterministically.
745
+
746
+ Added separate numeric analysis and lowering, `fact-table/0.14` numeric
747
+ operation facts, the `phase14.numeric.floor_arithmetic` RulePlan family,
748
+ `conversion-plan/0.14`, `c-ir/0.14`, `generated-c/0.14`, and 0.14 summary and
749
+ decision-trace identities. The active numeric policy is
750
+ `phase14-proved-floor-arithmetic-v0.14`.
751
+
752
+ Activated the frozen `pycf.i64.floor_div@1.0.0` and
753
+ `pycf.i64.floor_mod@1.0.0` Phase 10 assets without changing their registry or
754
+ asset fingerprints. Each occurrence selects exactly one helper, and the
755
+ registry emits each selected helper once. Deterministic signed-64 temporaries
756
+ preserve left-to-right, exactly-once operand evaluation.
757
+
758
+ The admitted divisor proof excludes C11 division by zero and
759
+ `INT64_MIN / -1`; no runtime failure channel, exception emulation,
760
+ arbitrary-precision runtime, allocation, or cleanup was added. Mathematical
761
+ fixtures close Python floor quotient, divisor-sign remainder, and the division
762
+ identity across the supported sign and boundary cases.
763
+
764
+ Preserved exact explicit Phase 13 conversion behavior and the unchanged module,
765
+ record, container, workspace, no-host-discovery, and source-only product
766
+ boundaries. Generated C was not compiled, linked, loaded, or executed.
767
+
768
+ Phase 14A is sealed independently. Broader Phase 14 remains closed pending a
769
+ new decision and explicit approval. Phase 15 has not started.
770
+
771
+ ## 0.13.0 — Phase 13 static records
772
+
773
+ Status: promoted.
774
+
775
+ Added a deliberately narrow immutable-record subset expressed with one exact
776
+ top-level Python class shape. Accepted records contain 1–64 ordered `int`,
777
+ `float`, or `bool` fields, an exact structural `__init__`, direct fresh
778
+ function-local positional construction, and direct statically resolved field
779
+ reads.
780
+
781
+ Added `fact-table/0.13` record definitions, fields, initializers, instances,
782
+ bindings, and accesses; seven record RulePlans; `conversion-plan/0.13`; record
783
+ nodes in `c-ir/0.13`; `generated-c/0.13`; and 0.13 summary and decision-trace
784
+ identities. The active record policy is
785
+ `phase13-immutable-automatic-records-v0.13`.
786
+
787
+ Record lowering emits deterministic named C `typedef struct` declarations and
788
+ fully initialized `const` aggregates in automatic function storage. Arguments
789
+ are evaluated left to right and once before construction; field reads use
790
+ direct member access. No record helper or runtime is selected.
791
+
792
+ General methods, inheritance and the broader Python object model remain
793
+ unsupported. Records cannot be mutated, aliased, rebound, copied, escaped,
794
+ passed, returned, stored in containers, imported, or used across modules.
795
+ There is no heap allocation, null state, ownership transfer, or cleanup.
796
+
797
+ Adversarial hardening added binding-identity constructor resolution,
798
+ read-after-construction and complete fresh-local proofs, dunder-field and
799
+ annotation-builtin collision rejection, correct companion-module diagnostics,
800
+ cooperative record cancellation, exact const/member and field-type C IR
801
+ validation, manifest-bound provenance, and independent serialized record-fact
802
+ cross-validation. Historical `fact-table/0.12` module records retain their
803
+ exact shape; record linkage remains in Phase 13 evidence.
804
+
805
+ An initial working candidate was abandoned when an external compile-only
806
+ review triggered the declared no-toolchain rollback rule. The release candidate
807
+ was reseeded from a newly authenticated 0.12.2 extraction; the incident remains
808
+ recorded and is not rewritten as passing evidence.
809
+
810
+ Preserved the Phase 12 function-import profile, Phase 11 containers, Phase 10
811
+ helper registry, source-only product boundary, and PyCForge workspace safety
812
+ model. Explicit historical Phase 12 requests retain their 0.12 identities, and
813
+ class-free Phase 13 conversions preserve predecessor generated-C bytes.
814
+
815
+ The sealed 0.12.2 predecessor was authenticated before Phase 13 edits. Windows
816
+ 11 laptop testing remains planned user feedback after all phases; this release
817
+ does not claim Windows execution. Phase 14 has not started.
818
+
819
+ ## 0.12.2 — PyCForge workspace hardening
820
+
821
+ Corrected conversion-generation retirement, Save As destination validation,
822
+ unexpected worker failure recovery, visible module identity commits,
823
+ document-reorder controls, Unicode replacement navigation, keyboard access,
824
+ and failure-tolerant versioned presentation settings without changing the
825
+ sealed Phase 12 converter.
826
+
827
+ ## 0.12.1 — PyCForge workspace
828
+
829
+ Introduced the optional professional PyQt5 workspace over the sealed Phase 12
830
+ converter, including explicit bundle navigation, Python and immutable C
831
+ editors, diagnostics and mappings, stale-output protection, and atomic linked-C
832
+ saving.
833
+
834
+ ## 0.12.0 — Phase 12 explicit module bundles
835
+
836
+ Introduced the bounded 1–64-document SourceBundle profile, exact compile-time
837
+ direct-function imports, deterministic dependency ordering, and one generated
838
+ C translation unit without host module discovery or runtime initialization.