pycforge 0.15.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.
- pycforge-0.15.2/CHANGELOG.md +503 -0
- pycforge-0.15.2/CURRENT_STATE.md +251 -0
- pycforge-0.15.2/LICENSE +674 -0
- pycforge-0.15.2/MANIFEST.in +16 -0
- pycforge-0.15.2/PKG-INFO +209 -0
- pycforge-0.15.2/README.md +185 -0
- pycforge-0.15.2/RELEASE_NOTES.md +51 -0
- pycforge-0.15.2/pycforge/__init__.py +8 -0
- pycforge-0.15.2/pycforge/__main__.py +2 -0
- pycforge-0.15.2/pycforge/_version.py +1 -0
- pycforge-0.15.2/pycforge/converter/__init__.py +0 -0
- pycforge-0.15.2/pycforge/converter/analysis/__init__.py +5 -0
- pycforge-0.15.2/pycforge/converter/analysis/functions.py +723 -0
- pycforge-0.15.2/pycforge/converter/analysis/model.py +158 -0
- pycforge-0.15.2/pycforge/converter/analysis/planning.py +464 -0
- pycforge-0.15.2/pycforge/converter/analysis/stage.py +1976 -0
- pycforge-0.15.2/pycforge/converter/analysis/symbols.py +237 -0
- pycforge-0.15.2/pycforge/converter/analysis/validation.py +2166 -0
- pycforge-0.15.2/pycforge/converter/c_output/__init__.py +2 -0
- pycforge-0.15.2/pycforge/converter/c_output/conformance.py +297 -0
- pycforge-0.15.2/pycforge/converter/c_output/renderer.py +220 -0
- pycforge-0.15.2/pycforge/converter/conditional_regions/__init__.py +71 -0
- pycforge-0.15.2/pycforge/converter/conditional_regions/analysis.py +481 -0
- pycforge-0.15.2/pycforge/converter/conditional_regions/lowering.py +579 -0
- pycforge-0.15.2/pycforge/converter/conditional_regions/model.py +243 -0
- pycforge-0.15.2/pycforge/converter/conditional_regions/validation.py +690 -0
- pycforge-0.15.2/pycforge/converter/containers/__init__.py +19 -0
- pycforge-0.15.2/pycforge/converter/containers/analysis.py +542 -0
- pycforge-0.15.2/pycforge/converter/containers/lowering.py +290 -0
- pycforge-0.15.2/pycforge/converter/containers/model.py +146 -0
- pycforge-0.15.2/pycforge/converter/contracts/__init__.py +0 -0
- pycforge-0.15.2/pycforge/converter/contracts/configuration.py +178 -0
- pycforge-0.15.2/pycforge/converter/contracts/identifiers.py +68 -0
- pycforge-0.15.2/pycforge/converter/contracts/versions.py +71 -0
- pycforge-0.15.2/pycforge/converter/core/__init__.py +0 -0
- pycforge-0.15.2/pycforge/converter/core/artifact_io.py +87 -0
- pycforge-0.15.2/pycforge/converter/core/cancellation.py +7 -0
- pycforge-0.15.2/pycforge/converter/core/canonicalization.py +254 -0
- pycforge-0.15.2/pycforge/converter/core/context.py +13 -0
- pycforge-0.15.2/pycforge/converter/core/diagnostics.py +95 -0
- pycforge-0.15.2/pycforge/converter/core/enums.py +23 -0
- pycforge-0.15.2/pycforge/converter/core/fingerprint.py +22 -0
- pycforge-0.15.2/pycforge/converter/core/pipeline.py +8 -0
- pycforge-0.15.2/pycforge/converter/core/progress.py +25 -0
- pycforge-0.15.2/pycforge/converter/core/request.py +50 -0
- pycforge-0.15.2/pycforge/converter/core/resource_policy.py +31 -0
- pycforge-0.15.2/pycforge/converter/core/result.py +23 -0
- pycforge-0.15.2/pycforge/converter/core/serialization.py +36 -0
- pycforge-0.15.2/pycforge/converter/core/stage.py +10 -0
- pycforge-0.15.2/pycforge/converter/core/stage_artifact.py +80 -0
- pycforge-0.15.2/pycforge/converter/core/stage_outcome.py +15 -0
- pycforge-0.15.2/pycforge/converter/decision_trace/__init__.py +0 -0
- pycforge-0.15.2/pycforge/converter/decision_trace/recorder.py +52 -0
- pycforge-0.15.2/pycforge/converter/facade.py +459 -0
- pycforge-0.15.2/pycforge/converter/frontend/__init__.py +4 -0
- pycforge-0.15.2/pycforge/converter/frontend/normalizer.py +59 -0
- pycforge-0.15.2/pycforge/converter/frontend/parser.py +20 -0
- pycforge-0.15.2/pycforge/converter/frontend/source_document.py +93 -0
- pycforge-0.15.2/pycforge/converter/frontend/stages.py +518 -0
- pycforge-0.15.2/pycforge/converter/frontend/validation.py +76 -0
- pycforge-0.15.2/pycforge/converter/io/__init__.py +0 -0
- pycforge-0.15.2/pycforge/converter/io/atomic_writer.py +33 -0
- pycforge-0.15.2/pycforge/converter/ir/__init__.py +1 -0
- pycforge-0.15.2/pycforge/converter/ir/c_ir/__init__.py +4 -0
- pycforge-0.15.2/pycforge/converter/ir/c_ir/builder.py +26 -0
- pycforge-0.15.2/pycforge/converter/ir/c_ir/model.py +318 -0
- pycforge-0.15.2/pycforge/converter/ir/c_ir/serialization.py +88 -0
- pycforge-0.15.2/pycforge/converter/ir/c_ir/validation.py +834 -0
- pycforge-0.15.2/pycforge/converter/ir/python_ir/__init__.py +17 -0
- pycforge-0.15.2/pycforge/converter/ir/python_ir/nodes.py +86 -0
- pycforge-0.15.2/pycforge/converter/keyword_calls/__init__.py +68 -0
- pycforge-0.15.2/pycforge/converter/keyword_calls/analysis.py +458 -0
- pycforge-0.15.2/pycforge/converter/keyword_calls/lowering.py +271 -0
- pycforge-0.15.2/pycforge/converter/keyword_calls/model.py +304 -0
- pycforge-0.15.2/pycforge/converter/keyword_calls/validation.py +802 -0
- pycforge-0.15.2/pycforge/converter/keyword_only_calls/__init__.py +68 -0
- pycforge-0.15.2/pycforge/converter/keyword_only_calls/analysis.py +640 -0
- pycforge-0.15.2/pycforge/converter/keyword_only_calls/lowering.py +376 -0
- pycforge-0.15.2/pycforge/converter/keyword_only_calls/model.py +328 -0
- pycforge-0.15.2/pycforge/converter/keyword_only_calls/validation.py +1357 -0
- pycforge-0.15.2/pycforge/converter/lowering.py +1000 -0
- pycforge-0.15.2/pycforge/converter/modules/__init__.py +13 -0
- pycforge-0.15.2/pycforge/converter/modules/analysis.py +1250 -0
- pycforge-0.15.2/pycforge/converter/modules/lowering.py +200 -0
- pycforge-0.15.2/pycforge/converter/modules/model.py +73 -0
- pycforge-0.15.2/pycforge/converter/modules/stage.py +192 -0
- pycforge-0.15.2/pycforge/converter/numeric_semantics/__init__.py +23 -0
- pycforge-0.15.2/pycforge/converter/numeric_semantics/analysis.py +420 -0
- pycforge-0.15.2/pycforge/converter/numeric_semantics/lowering.py +153 -0
- pycforge-0.15.2/pycforge/converter/numeric_semantics/model.py +123 -0
- pycforge-0.15.2/pycforge/converter/records/__init__.py +34 -0
- pycforge-0.15.2/pycforge/converter/records/analysis.py +1394 -0
- pycforge-0.15.2/pycforge/converter/records/lowering.py +393 -0
- pycforge-0.15.2/pycforge/converter/records/model.py +319 -0
- pycforge-0.15.2/pycforge/converter/rules/__init__.py +3 -0
- pycforge-0.15.2/pycforge/converter/support_templates/__init__.py +49 -0
- pycforge-0.15.2/pycforge/converter/support_templates/assembly.py +106 -0
- pycforge-0.15.2/pycforge/converter/support_templates/factories.py +348 -0
- pycforge-0.15.2/pycforge/converter/support_templates/model.py +159 -0
- pycforge-0.15.2/pycforge/converter/support_templates/registry.py +388 -0
- pycforge-0.15.2/pycforge/converter/telemetry/__init__.py +0 -0
- pycforge-0.15.2/pycforge/converter/telemetry/sink.py +39 -0
- pycforge-0.15.2/pycforge/ide/__init__.py +19 -0
- pycforge-0.15.2/pycforge/ide/__main__.py +5 -0
- pycforge-0.15.2/pycforge/ide/_worker_event_codec.py +276 -0
- pycforge-0.15.2/pycforge/ide/_worker_protocol_json.py +197 -0
- pycforge-0.15.2/pycforge/ide/_worker_protocol_types.py +90 -0
- pycforge-0.15.2/pycforge/ide/_worker_request_codec.py +200 -0
- pycforge-0.15.2/pycforge/ide/_worker_request_data.py +260 -0
- pycforge-0.15.2/pycforge/ide/_worker_result_data.py +343 -0
- pycforge-0.15.2/pycforge/ide/action_contract.py +469 -0
- pycforge-0.15.2/pycforge/ide/action_validation.py +229 -0
- pycforge-0.15.2/pycforge/ide/command_palette.py +223 -0
- pycforge-0.15.2/pycforge/ide/controller.py +904 -0
- pycforge-0.15.2/pycforge/ide/controller_conversion.py +546 -0
- pycforge-0.15.2/pycforge/ide/controller_io.py +205 -0
- pycforge-0.15.2/pycforge/ide/editor.py +951 -0
- pycforge-0.15.2/pycforge/ide/editor_commands_qt.py +274 -0
- pycforge-0.15.2/pycforge/ide/editor_lexical.py +43 -0
- pycforge-0.15.2/pycforge/ide/editor_sidebars.py +236 -0
- pycforge-0.15.2/pycforge/ide/editor_syntax.py +243 -0
- pycforge-0.15.2/pycforge/ide/find_replace.py +535 -0
- pycforge-0.15.2/pycforge/ide/icons.py +91 -0
- pycforge-0.15.2/pycforge/ide/io_service.py +196 -0
- pycforge-0.15.2/pycforge/ide/model.py +164 -0
- pycforge-0.15.2/pycforge/ide/panels.py +903 -0
- pycforge-0.15.2/pycforge/ide/positions.py +220 -0
- pycforge-0.15.2/pycforge/ide/process_worker.py +130 -0
- pycforge-0.15.2/pycforge/ide/qt.py +230 -0
- pycforge-0.15.2/pycforge/ide/qt_actions.py +418 -0
- pycforge-0.15.2/pycforge/ide/qt_close.py +169 -0
- pycforge-0.15.2/pycforge/ide/qt_command_palette.py +297 -0
- pycforge-0.15.2/pycforge/ide/qt_contract.py +220 -0
- pycforge-0.15.2/pycforge/ide/qt_documents.py +590 -0
- pycforge-0.15.2/pycforge/ide/qt_editor_buffers.py +113 -0
- pycforge-0.15.2/pycforge/ide/qt_editor_surfaces.py +112 -0
- pycforge-0.15.2/pycforge/ide/qt_menus.py +324 -0
- pycforge-0.15.2/pycforge/ide/qt_projection.py +500 -0
- pycforge-0.15.2/pycforge/ide/qt_shell.py +348 -0
- pycforge-0.15.2/pycforge/ide/qt_shell_interactions.py +320 -0
- pycforge-0.15.2/pycforge/ide/qt_state.py +393 -0
- pycforge-0.15.2/pycforge/ide/qt_workspace_features.py +398 -0
- pycforge-0.15.2/pycforge/ide/qt_workspace_navigation.py +208 -0
- pycforge-0.15.2/pycforge/ide/qt_workspace_observers.py +173 -0
- pycforge-0.15.2/pycforge/ide/qt_workspace_panels.py +545 -0
- pycforge-0.15.2/pycforge/ide/qt_workspace_widgets.py +228 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/about.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/add-document.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/brand-mark.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/bundle-search.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/cancel.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/check.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/chevron-right.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/close.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/collapse-all.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/command-palette.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/convert.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/copy.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/cut.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/decision-trace.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/details.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/diagnostics.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/duplicate-line.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/exit.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/expand-all.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/export.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/find.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/go-to-line.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/go-to-output.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/go-to-source.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/history.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/indent.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/link-c.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/mappings.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/module.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/move-down.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/move-line-down.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/move-line-up.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/move-up.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/next.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/open.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/outdent.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/outline.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/paste.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/previous.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/primary-module.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/redo.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/remove-document.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/replace.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/save-as.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/save.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/select-all.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/settings.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/show-c.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/split-view.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/summary.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/telemetry.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/toggle-comment.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/toggle-fold.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/undo.svg +1 -0
- pycforge-0.15.2/pycforge/ide/resources/icons/whitespace.svg +1 -0
- pycforge-0.15.2/pycforge/ide/revisions.py +400 -0
- pycforge-0.15.2/pycforge/ide/search_service.py +280 -0
- pycforge-0.15.2/pycforge/ide/session_history.py +150 -0
- pycforge-0.15.2/pycforge/ide/source_editing.py +417 -0
- pycforge-0.15.2/pycforge/ide/source_structure.py +558 -0
- pycforge-0.15.2/pycforge/ide/source_structure_async.py +191 -0
- pycforge-0.15.2/pycforge/ide/supervisor.py +503 -0
- pycforge-0.15.2/pycforge/ide/theme.py +119 -0
- pycforge-0.15.2/pycforge/ide/theme_stylesheet.py +598 -0
- pycforge-0.15.2/pycforge/ide/theme_workspace_stylesheet.py +155 -0
- pycforge-0.15.2/pycforge/ide/visual_tokens.py +142 -0
- pycforge-0.15.2/pycforge/ide/worker_protocol.py +80 -0
- pycforge-0.15.2/pycforge/ide/workspace_search.py +462 -0
- pycforge-0.15.2/pycforge/ide/workspace_session.py +256 -0
- pycforge-0.15.2/pycforge/laboratory/__init__.py +6 -0
- pycforge-0.15.2/pycforge/laboratory/audits.py +2244 -0
- pycforge-0.15.2/pycforge/laboratory/checkpoint_e.py +2685 -0
- pycforge-0.15.2/pycforge/laboratory/cli.py +119 -0
- pycforge-0.15.2/pycforge/laboratory/exit_codes.py +11 -0
- pycforge-0.15.2/pycforge/laboratory/keyword_audit.py +661 -0
- pycforge-0.15.2/pycforge/laboratory/keyword_only_audit.py +481 -0
- pycforge-0.15.2/pycforge.egg-info/PKG-INFO +209 -0
- pycforge-0.15.2/pycforge.egg-info/SOURCES.txt +228 -0
- pycforge-0.15.2/pycforge.egg-info/dependency_links.txt +1 -0
- pycforge-0.15.2/pycforge.egg-info/entry_points.txt +5 -0
- pycforge-0.15.2/pycforge.egg-info/requires.txt +1 -0
- pycforge-0.15.2/pycforge.egg-info/top_level.txt +1 -0
- pycforge-0.15.2/pyproject.toml +45 -0
- pycforge-0.15.2/setup.cfg +4 -0
|
@@ -0,0 +1,503 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.15.2 — Phase 15C IDE-grade authoring and inspection workspace
|
|
4
|
+
|
|
5
|
+
Status: promoted and sealed; Phase 15D remains unopened.
|
|
6
|
+
|
|
7
|
+
Prepared the first public PyPI and GitHub distribution without changing the
|
|
8
|
+
converter contract. PyQt5 is now a mandatory runtime dependency of the base
|
|
9
|
+
package, so an ordinary `pip install pycforge` installs the desktop application
|
|
10
|
+
and both `pycforge` and `pycforge-workspace` entry points. Removed the obsolete
|
|
11
|
+
`workspace` extra, added PyPI long-description and project metadata, corrected
|
|
12
|
+
the command-line examples, and added clean-build, clean-install, offscreen Qt,
|
|
13
|
+
GitHub Release, and Trusted Publishing gates.
|
|
14
|
+
|
|
15
|
+
Established the public source license as `GPL-3.0-only`, compatible with the
|
|
16
|
+
GPL PyPI distribution of PyQt5, and included the complete license text in the
|
|
17
|
+
source and package metadata.
|
|
18
|
+
|
|
19
|
+
Advanced the package to `0.15.2`, the workspace contract to
|
|
20
|
+
`pycforge-workspace/0.5`, the action registry to
|
|
21
|
+
`pycforge.action-registry/0.2`, and the visual system to
|
|
22
|
+
`pycforge.visual-system/0.2`. The converter remains sealed at `0.14.3`, the
|
|
23
|
+
worker protocol remains `pycforge.worker-protocol/0.1`, and presentation
|
|
24
|
+
settings remain schema `1`.
|
|
25
|
+
|
|
26
|
+
Added identifier-only document-tab and split-pane session state, with at most
|
|
27
|
+
two synchronized Python source panes. Added bounded undoable source operations
|
|
28
|
+
for line duplication, line movement, indentation, outdentation, and Python
|
|
29
|
+
comment toggling, together with go-to-line, whitespace visibility, and source
|
|
30
|
+
fold controls.
|
|
31
|
+
|
|
32
|
+
Added cancellable latest-wins source-structure analysis for already-open Python
|
|
33
|
+
text. The normalized outline and breadcrumb projection is parent-linked and
|
|
34
|
+
bounded by symbol count, depth, name length, and source-text budgets. Invalid
|
|
35
|
+
syntax remains inert and cannot retire valid structure for unrelated open
|
|
36
|
+
documents.
|
|
37
|
+
|
|
38
|
+
Added deterministic literal bundle search across the explicit open
|
|
39
|
+
`SourceBundle`, with immutable path-free requests, exact Python and UTF-16
|
|
40
|
+
positions, bounded previews, a global 5,000-match cap, and stale-generation
|
|
41
|
+
suppression. No host directory or project discovery was introduced.
|
|
42
|
+
|
|
43
|
+
Added a bounded command palette that projects enabled and visible static
|
|
44
|
+
registry actions without retaining handlers or adding a free-form command
|
|
45
|
+
execution surface. Added payload-free session transpilation history capped at
|
|
46
|
+
64 terminal records.
|
|
47
|
+
|
|
48
|
+
Expanded the declarative command system to 48 actions, five persistent main
|
|
49
|
+
menus, and eleven context surfaces. Added the Navigate menu, source-authoring
|
|
50
|
+
commands, document-tab, bundle-search, history, text-input, and read-only-text
|
|
51
|
+
contexts while preserving the exact read-only generated-C command allowlist and
|
|
52
|
+
single-owner persistent `QAction` construction.
|
|
53
|
+
|
|
54
|
+
Expanded the vector catalogue from 41 to 55 safe SVG icons and extended the
|
|
55
|
+
shared workspace stylesheet for document tabs, split views, breadcrumbs,
|
|
56
|
+
outline, bundle-search results, history, and command-palette presentation.
|
|
57
|
+
|
|
58
|
+
Preserved the Phase 15A spawned-worker model, one-active/one-latest scheduling,
|
|
59
|
+
bounded cancellation, immutable revision and fingerprint authentication,
|
|
60
|
+
stale-result suppression, off-GUI file and search work, and incremental
|
|
61
|
+
generated-C projection. Python remains the only editable code surface.
|
|
62
|
+
|
|
63
|
+
Recorded current-release real PyQt evidence on the offscreen QPA backend
|
|
64
|
+
using Python 3.12.13, PyQt 5.15.11, Qt build 5.15.14, and Qt runtime 5.15.19.
|
|
65
|
+
One `QApplication` ran 18 focused workspace cases with zero failures, errors,
|
|
66
|
+
or skips. A 250,113-character source constructed the window in 0.054 seconds,
|
|
67
|
+
reached the first event turn in 0.0103 seconds, and produced 110 timer ticks at
|
|
68
|
+
0.01-second intervals during 1.201 seconds of isolated transpilation. Large-file
|
|
69
|
+
mode detached the syntax highlighter while preserving the shared editor buffer;
|
|
70
|
+
shutdown left zero new PyCForge threads and zero worker leaks. A small
|
|
71
|
+
end-to-end workspace conversion completed in 0.408 seconds as supporting
|
|
72
|
+
evidence.
|
|
73
|
+
|
|
74
|
+
Authenticated, assigned the canonical validation report and release
|
|
75
|
+
fingerprint, and built and validated the Phase 15C milestone source archive,
|
|
76
|
+
pure-Python wheel, handoff, package report, and checksum records. These
|
|
77
|
+
artifacts establish Phase 15C release custody, not the wider Phase 15D
|
|
78
|
+
distribution and platform gate.
|
|
79
|
+
|
|
80
|
+
PyCForge remains a deterministic Python-to-C source transpiler. It does not
|
|
81
|
+
compile, assemble, link, load, run, execute, debug, profile, deploy, or invoke
|
|
82
|
+
generated C or a C toolchain.
|
|
83
|
+
|
|
84
|
+
The real offscreen widget evidence is not visible-platform certification.
|
|
85
|
+
Visible Windows 11/Linux rendering, physical display scaling, and
|
|
86
|
+
assistive-technology validation remain Phase 15D gates.
|
|
87
|
+
|
|
88
|
+
## 0.15.1 — Phase 15B application shell and visual system
|
|
89
|
+
|
|
90
|
+
Status: implemented and validated within the available supporting scope.
|
|
91
|
+
|
|
92
|
+
Advanced the workspace contract to `pycforge-workspace/0.4` and introduced the
|
|
93
|
+
import-safe `pycforge.action-registry/0.1`. Every persistent application command
|
|
94
|
+
now has one declarative authority for its stable ID, label, mnemonic, SVG icon,
|
|
95
|
+
shortcut, tooltip, status explanation, accessible name, checkability, tone, and
|
|
96
|
+
allowed surfaces. The Qt adapter creates each persistent `QAction` once and
|
|
97
|
+
shares it across menus, toolbars, context surfaces, and bounded dynamic entries.
|
|
98
|
+
|
|
99
|
+
Added custom gradient/icon File, Edit, View, and Transpile menus and declared
|
|
100
|
+
context menus for Python source, read-only generated C, the Source Bundle
|
|
101
|
+
navigator, diagnostics, mappings, conversion summary, decision trace, and
|
|
102
|
+
telemetry. The custom presentation remains native-backed by `QMenu` and
|
|
103
|
+
`QAction`, preserving keyboard traversal, mnemonics, shortcut columns, checked
|
|
104
|
+
state, focus return, Escape dismissal, assistive exposure, submenu behavior,
|
|
105
|
+
and screen-edge placement. Generated C uses an explicit read-only command
|
|
106
|
+
allowlist.
|
|
107
|
+
|
|
108
|
+
Introduced `pycforge.visual-system/0.1` with cohesive semantic graphite
|
|
109
|
+
surfaces, layered gradients, high-contrast text, blue and violet focus accents,
|
|
110
|
+
a restrained warm transpilation accent, and explicit success, warning, error,
|
|
111
|
+
and danger treatments. Expanded professional self-contained SVG iconography
|
|
112
|
+
uses logical dimensions and excludes raster payloads, embedded data, remote
|
|
113
|
+
references, fixed physical sizing, scripts, and font-glyph dependencies.
|
|
114
|
+
|
|
115
|
+
Added high-DPI and accessibility foundations: high-DPI scaling before
|
|
116
|
+
application construction, logical icon sizing, stable menu accessible names,
|
|
117
|
+
visible tooltips and accessible names for icon-only controls, visible keyboard
|
|
118
|
+
focus, and non-color-only state treatment. The interface has no animation and
|
|
119
|
+
is reduced-motion safe by construction.
|
|
120
|
+
|
|
121
|
+
Removed the legacy presentation-namespace migration and compatibility surface.
|
|
122
|
+
Current source, settings, menus, toolbars, tests, evidence, and distribution
|
|
123
|
+
use PyCForge identity exclusively. Original pre-migration bytes remain
|
|
124
|
+
authoritative in the authenticated Phase 15A archive.
|
|
125
|
+
|
|
126
|
+
Preserved all Phase 15A responsiveness and isolation guarantees: spawned
|
|
127
|
+
conversion, one-active/one-latest scheduling, cooperative and hard
|
|
128
|
+
cancellation, immutable revision authentication, stale-result suppression,
|
|
129
|
+
off-GUI file I/O and search, bounded editor projections, incremental generated-C
|
|
130
|
+
population, and exact Save C authority.
|
|
131
|
+
|
|
132
|
+
Bounded the structured detail inspectors with an iterative cycle-safe
|
|
133
|
+
projection limited to 1,024 nodes, 16 levels, 256 children per container, and
|
|
134
|
+
2,048 characters per value. Corrected scroll-area context placement, made
|
|
135
|
+
uncommitted identity edits immediately stale and unsavable as C, and suppressed
|
|
136
|
+
cancellation-pending diagnostics as non-current.
|
|
137
|
+
|
|
138
|
+
Hardened release custody around a descriptor-bound, size-bounded source
|
|
139
|
+
snapshot and a validation-subject digest that is checked against the exact
|
|
140
|
+
packaged bytes. Packaging now pins its production environment, compares
|
|
141
|
+
duplicate wheel and normalized-source builds, inspects and smokes the sealed
|
|
142
|
+
wheel payload, rejects noncanonical validation JSON, and durably publishes the
|
|
143
|
+
seven-artifact directory only after the final vocabulary and checksum graph
|
|
144
|
+
passes.
|
|
145
|
+
|
|
146
|
+
The package is `0.15.1`; the converter remains sealed at `0.14.3`, the worker
|
|
147
|
+
protocol remains `pycforge.worker-protocol/0.1`, and presentation settings
|
|
148
|
+
remain schema `1`. PyCForge remains a deterministic Python-to-C source
|
|
149
|
+
transpiler. No C compiler, linker, loader, runtime execution, debugger,
|
|
150
|
+
terminal, toolchain, project explorer, plugin system, or generated-C editor was
|
|
151
|
+
added.
|
|
152
|
+
|
|
153
|
+
PyQt5 is unavailable on the validation host, so Phase 15B evidence is
|
|
154
|
+
supporting source, static, headless, registry, icon, and optional-widget
|
|
155
|
+
evidence only. Visible Windows 11/Linux rendering, real display scaling, and
|
|
156
|
+
assistive-technology validation remain Phase 15D gates. Phase 15C and Phase 15D
|
|
157
|
+
remain unopened.
|
|
158
|
+
|
|
159
|
+
Final discovery runs 750 tests: 734 pass, 16 are expected skips, and none fail.
|
|
160
|
+
Eleven skips require unavailable PyQt5 widgets; five require unavailable older
|
|
161
|
+
optional custody artifacts.
|
|
162
|
+
|
|
163
|
+
## 0.15.0 — Phase 15A responsiveness and isolation
|
|
164
|
+
|
|
165
|
+
Status: promoted and sealed.
|
|
166
|
+
|
|
167
|
+
Replaced workspace in-process conversion with a spawn-only process supervisor.
|
|
168
|
+
The bounded `pycforge.worker-protocol/0.1` uses canonical JSON over byte-only
|
|
169
|
+
connections and validates generation, bundle, transport, request, artifact,
|
|
170
|
+
mapping, and output identities before publication. Scheduling is exactly one
|
|
171
|
+
active plus one replaceable latest pending request.
|
|
172
|
+
|
|
173
|
+
Added cooperative cancellation with a 750 ms grace, hard termination and
|
|
174
|
+
two-second reclamation, latest-pending start bounds, non-blocking close, and
|
|
175
|
+
recoverable startup, crash, malformed/oversized IPC, broken-pipe, and worker
|
|
176
|
+
resource-exhaustion handling. Canceled, failed, stale, superseded, partial, or
|
|
177
|
+
mismatched work cannot publish C or replace last-known-good C.
|
|
178
|
+
|
|
179
|
+
Added immutable off-GUI revision/index services with cached UTF-8 and UTF-16
|
|
180
|
+
position facts. Convert and Save C remain disabled until the latest revision
|
|
181
|
+
authenticates. Moved linked-file reads, hashes, observations, and guarded atomic
|
|
182
|
+
writes to bounded daemon workers; an in-flight stale Save C fails before atomic
|
|
183
|
+
replacement.
|
|
184
|
+
|
|
185
|
+
Added debounced latest-wins literal search with an exact total and a 5,000-range
|
|
186
|
+
projection cap. Added automatic large-file editor mode, bounded syntax/bracket
|
|
187
|
+
work, marker and overview caps, viewport-focused selections, incremental 32 KiB
|
|
188
|
+
generated-C projection, and deferred hidden output/detail work. Source edits
|
|
189
|
+
are coalesced before proportional controller synchronization.
|
|
190
|
+
|
|
191
|
+
Validated direct-versus-isolated serialized-result equality, hard-cancel and
|
|
192
|
+
failure containment, maximum-envelope revision/search/index behavior, injected
|
|
193
|
+
slow file I/O, and 100 edit/convert/cancel cycles without stale publication,
|
|
194
|
+
deadlock, crash, obsolete pending work, or orphan processes.
|
|
195
|
+
|
|
196
|
+
Advanced the package to `0.15.0` and workspace contract to
|
|
197
|
+
`pycforge-workspace/0.3`. The complete converter subtree and every converter
|
|
198
|
+
contract remain sealed at `0.14.3`.
|
|
199
|
+
|
|
200
|
+
PyCForge remains a Python-to-C source transpiler. No compiler, linker, loader,
|
|
201
|
+
generated-C executor, runner, debugger, terminal, toolchain, plugin,
|
|
202
|
+
project-explorer, host-discovery, or generated-C editor was added. Phase 15B,
|
|
203
|
+
15C, and 15D remain unopened; visible Windows 11/Linux PyQt and accessibility
|
|
204
|
+
claims are reserved for Phase 15D.
|
|
205
|
+
|
|
206
|
+
## 0.14.4 — Hardening Checkpoint E
|
|
207
|
+
|
|
208
|
+
Status: promoted and sealed.
|
|
209
|
+
|
|
210
|
+
Completed the roadmap's post-Phase-14 full-subset architecture review,
|
|
211
|
+
deterministic full-supported-subset fuzz and metamorphic gate, and documentation
|
|
212
|
+
and 69-entry feature-matrix reconciliation. No Python construct, C IR shape,
|
|
213
|
+
helper, diagnostic, conversion policy, public converter schema, or generated-C
|
|
214
|
+
style was added or changed.
|
|
215
|
+
|
|
216
|
+
Separated the package identity (`0.14.4`) from the sealed deterministic
|
|
217
|
+
converter contract identity (`0.14.3`). Golden output, serialized results,
|
|
218
|
+
facts, RulePlans, summaries, traces, telemetry, diagnostics, mappings, and
|
|
219
|
+
fingerprints remain Phase 14D values.
|
|
220
|
+
|
|
221
|
+
Corrected the active desktop identity to PyCForge across front-facing titles,
|
|
222
|
+
accessibility names, theme exports, and the settings namespace. Added a bounded,
|
|
223
|
+
non-destructive migration for allow-listed predecessor presentation settings
|
|
224
|
+
and retained non-exported compatibility aliases only for sealed historical
|
|
225
|
+
validators.
|
|
226
|
+
|
|
227
|
+
Established `pycforge-workspace/0.2` and a binding workspace-quality addendum.
|
|
228
|
+
The addendum assigns the requested process-isolated conversion supervisor,
|
|
229
|
+
maximum-input responsiveness, professional IDE-grade authoring and inspection,
|
|
230
|
+
custom gradient/icon main and context menus, accessibility, high-DPI, and real
|
|
231
|
+
Windows 11/Linux PyQt gates to Phase 15. Checkpoint E does not claim those
|
|
232
|
+
future gates or open Phase 15.
|
|
233
|
+
|
|
234
|
+
PyCForge remains a Python-to-C source transpiler. It does not compile, link,
|
|
235
|
+
load, run, execute, debug, benchmark, or otherwise invoke generated C or a C
|
|
236
|
+
toolchain.
|
|
237
|
+
|
|
238
|
+
Promotion executes all 69 frozen feature-matrix entries plus the unlisted
|
|
239
|
+
default, with 37 supported witnesses converted and 33 boundary witnesses
|
|
240
|
+
rejected without mismatch. The seeded hardening corpus contains 16 fixed and
|
|
241
|
+
64 generated cases, four per promoted family, and all 80 match the
|
|
242
|
+
authenticated Phase 14D predecessor byte-for-byte.
|
|
243
|
+
|
|
244
|
+
Final validation discovers 589 tests: 572 pass, 17 are expected skips, and
|
|
245
|
+
zero fail. The focused Checkpoint E set passes 46 of 46, and every cumulative
|
|
246
|
+
source-only audit passes. Reproducible wheel and normalized source-archive
|
|
247
|
+
builds are byte-identical; isolated wheel and extracted-source smokes pass.
|
|
248
|
+
The wheel contains both PyCForge entry points, exactly 17 SVG assets, and no
|
|
249
|
+
native binaries.
|
|
250
|
+
|
|
251
|
+
## 0.14.3 — Phase 14D exact required keyword-only calls
|
|
252
|
+
|
|
253
|
+
Status: promoted and sealed.
|
|
254
|
+
|
|
255
|
+
Added one exact source-only declaration and call profile for required
|
|
256
|
+
keyword-only parameters on already-resolved direct source functions. An admitted
|
|
257
|
+
function may have existing required positional-only and positional-or-keyword
|
|
258
|
+
parameters followed by one or more exactly annotated required keyword-only
|
|
259
|
+
parameters. Every `kw_defaults` entry is null; positional defaults,
|
|
260
|
+
keyword-only defaults, `*args`, and `**kwargs` remain rejected.
|
|
261
|
+
|
|
262
|
+
Ordinary positional actuals bind only positional-capable formals. Explicit named
|
|
263
|
+
actuals may bind unbound positional-or-keyword or required keyword-only formals.
|
|
264
|
+
Every required formal is covered exactly once with an exact category and
|
|
265
|
+
representation match. Explicit values stage once in Python source order; only
|
|
266
|
+
pure temporary references are arranged in full formal order for the existing
|
|
267
|
+
structured `CCallExpr`. No runtime binder, `TypeError` channel, default
|
|
268
|
+
evaluation, coercion, allocation, ownership transfer, or cleanup model was
|
|
269
|
+
added.
|
|
270
|
+
|
|
271
|
+
Added complete positive and negative `keyword-only-call-binding-facts` under
|
|
272
|
+
`fact-table/0.14.3` and the helper-free
|
|
273
|
+
`phase14.keyword_only_call.exact_binding@0.14.3` RulePlan. The lowering shape is
|
|
274
|
+
`source-order-actual-temporaries-formal-order-references-v1`. Independent
|
|
275
|
+
validation reconstructs declaration kind, target, name binding, coverage,
|
|
276
|
+
categories, source/formal orders, C parameter order, and exact plan
|
|
277
|
+
correspondence before lowering.
|
|
278
|
+
Required-keyword-only declarations remain in the existing function-signature
|
|
279
|
+
facts without changing the serialized `ParameterFact` shape. Affected existing
|
|
280
|
+
`FunctionDef` RulePlans gain explicit keyword-only parameter and
|
|
281
|
+
C-interface-mode-erasure facts and obligations, and independent validation
|
|
282
|
+
covers admitted declarations even when they have no call site.
|
|
283
|
+
|
|
284
|
+
No new source diagnostic code is required. `PYC2904` retains missing coverage
|
|
285
|
+
and excess positional arity, `PYC2905` exact representation mismatch, `PYC2910`
|
|
286
|
+
unpacking and excluded call shapes, and `PYC2912` exact name-binding failures.
|
|
287
|
+
Under active 0.14.3 identities `PYC2911` continues to reject defaults,
|
|
288
|
+
defaulted keyword-only parameters, variadics, and keyword-only declarations
|
|
289
|
+
outside the exact required profile; it no longer rejects an otherwise eligible
|
|
290
|
+
required keyword-only declaration solely because `kwonlyargs` is nonempty.
|
|
291
|
+
Historical 0.14.2 diagnostics remain unchanged.
|
|
292
|
+
|
|
293
|
+
Advanced the active rule set to
|
|
294
|
+
`phase14-required-keyword-only-calls-v0.14.3`, renderer to
|
|
295
|
+
`c-renderer-v0.14.3`, and conversion-plan, C IR, generated-C, summary, and
|
|
296
|
+
decision-trace envelopes to 0.14.3. SourceBundle 0.2, Python IR 0.4, result
|
|
297
|
+
serialization 0.5, target and semantic policies, the helper registry, and all
|
|
298
|
+
container/module/record/numeric/conditional policies remain frozen.
|
|
299
|
+
|
|
300
|
+
Explicit 0.14.2 and earlier requests retain their exact facts, plans,
|
|
301
|
+
diagnostics, generated-C bytes, and fingerprints. Under active 0.14.3
|
|
302
|
+
identities, sources selecting no Phase 14D declaration or call behavior retain
|
|
303
|
+
Phase 14C generated-C bytes and output fingerprints. Required keyword-only
|
|
304
|
+
support adds no C IR syntax kind, renderer grammar, helper, host discovery, or
|
|
305
|
+
toolchain surface. Generated C remains source-validated only and is not
|
|
306
|
+
compiled, linked, loaded, or executed. Defaults, variadics, unpacking, dynamic
|
|
307
|
+
targets, methods, recursion, exceptions, closures, generators, async behavior,
|
|
308
|
+
and every neighboring Phase 14 family remain excluded. Phase 15 has not
|
|
309
|
+
started.
|
|
310
|
+
|
|
311
|
+
Promotion passed 539 discovered tests: 524 passed, 15 skipped, and zero failed.
|
|
312
|
+
The skips are exactly 10 for unavailable PyQt5 and five for unavailable older
|
|
313
|
+
custody artifacts. The focused Phase 14D gate passed 65 of 65 tests. Every
|
|
314
|
+
active cumulative audit passed, including the required-keyword-only and
|
|
315
|
+
Phase 14D transition audits.
|
|
316
|
+
|
|
317
|
+
Two fixed-epoch builds produced the same 340,054-byte
|
|
318
|
+
`pycforge-0.14.3-py3-none-any.whl`, SHA-256
|
|
319
|
+
`c0dd0c0ed79131daa5af815a8a9bb096b9f955c9c617ec0b8eb6a10c69d27b7f`.
|
|
320
|
+
The wheel archive and `RECORD` each account for 132 members: 17 SVG assets and
|
|
321
|
+
zero native-code members. Two normalized source-archive builds were likewise
|
|
322
|
+
byte-identical. The promoted converter subtree SHA-256 is
|
|
323
|
+
`74b32c25e40af3398dd46288941812ce7ad87f0d4b72fec3d3bd786cc1b8f3a8`.
|
|
324
|
+
|
|
325
|
+
Release validation remained source-only: no gate compiled, linked, loaded, or
|
|
326
|
+
executed generated C. No new actual PyQt5 widget or Windows 11 execution is
|
|
327
|
+
claimed. Historical opening records remain preserved, and Phase 15 has not
|
|
328
|
+
started.
|
|
329
|
+
|
|
330
|
+
## 0.14.2 — Phase 14C direct exact keyword calls
|
|
331
|
+
|
|
332
|
+
Status: promoted and sealed.
|
|
333
|
+
|
|
334
|
+
Added one closed compile-time binding profile for explicit keyword arguments on
|
|
335
|
+
already-resolved direct source-function calls. Calls may use a leading ordinary
|
|
336
|
+
positional prefix followed by one or more explicit named keywords. Every
|
|
337
|
+
required formal is bound exactly once, positional-only formals remain
|
|
338
|
+
positional-only, and actual/formal categories must match exactly. Same-module
|
|
339
|
+
and existing explicit cross-module source-function bindings are eligible;
|
|
340
|
+
dynamic targets, callable values, methods, defaults, keyword-only parameters,
|
|
341
|
+
variadics, `*`/`**` unpacking, recursion, `range` keywords, and record-
|
|
342
|
+
constructor keywords remain excluded.
|
|
343
|
+
|
|
344
|
+
Added independent keyword-call analysis and reconstruction,
|
|
345
|
+
`keyword-call-binding-facts` under `fact-table/0.14.2`, and the helper-free
|
|
346
|
+
`phase14.keyword_call.exact_binding@0.14.2` RulePlan. Argument values are staged
|
|
347
|
+
left to right and once in Python source order, then pure temporary references
|
|
348
|
+
are arranged in formal ordinal order for the existing structured `CCallExpr`.
|
|
349
|
+
No C IR node kind, renderer grammar, helper, runtime binder, failure channel,
|
|
350
|
+
allocation, ownership transfer, or cleanup model was added.
|
|
351
|
+
|
|
352
|
+
Added `PYC2912` for exact static name-binding failures: unknown keyword names,
|
|
353
|
+
positional-only names used as keywords, positional/keyword collisions, and
|
|
354
|
+
duplicate keywords. `PYC2910` remains the boundary for `*`/`**`, null keyword
|
|
355
|
+
names, unpacking, and other excluded keyword shapes. Existing target,
|
|
356
|
+
declaration, arity, category, record, `range`, and recursion diagnostics retain
|
|
357
|
+
precedence.
|
|
358
|
+
|
|
359
|
+
Advanced the active rule set, renderer, conversion plan, C IR, generated-C,
|
|
360
|
+
summary, and trace envelopes to 0.14.2. SourceBundle 0.2, Python IR 0.4, result
|
|
361
|
+
serialization 0.5, all public policies, the helper registry, Phase 14A numeric
|
|
362
|
+
facts/helpers, and Phase 14B `fact-table/0.14.1` conditional facts and RulePlans
|
|
363
|
+
remain unchanged. Explicit 0.14.1 requests retain their historical keyword
|
|
364
|
+
rejection and artifact behavior; active sources selecting no 14C call retain
|
|
365
|
+
predecessor generated-C bytes and output fingerprints.
|
|
366
|
+
|
|
367
|
+
Promotion authenticated the sealed Phase 14B source archive and wheel, passed
|
|
368
|
+
the cumulative suite and audits including the keyword and Phase 14/14B/14C
|
|
369
|
+
transition audits, sealed deterministic wheel and source-archive builds, and
|
|
370
|
+
passed isolated package validation. All release validation remained source-only;
|
|
371
|
+
generated C was not compiled, linked, loaded, or executed. PyQt5 was unavailable
|
|
372
|
+
in the release environment, so no new widget execution is claimed and sealed
|
|
373
|
+
offscreen-widget evidence remains preserved. Windows 11 execution is not
|
|
374
|
+
claimed. Phase 14D and Phase 15 have not started.
|
|
375
|
+
|
|
376
|
+
## 0.14.1 — Phase 14B conditional temporary regions
|
|
377
|
+
|
|
378
|
+
Status: Phase 14B promoted and sealed.
|
|
379
|
+
|
|
380
|
+
Added exact conditional placement for statement-producing temporaries belonging
|
|
381
|
+
to expressions already supported by the cumulative scalar subset. Boolean
|
|
382
|
+
`and`/`or` expressions now use an initialized Boolean result and flat guarded
|
|
383
|
+
assignments. Later operands of chained comparisons use guarded materialization
|
|
384
|
+
and rolling middle values, preserving left-to-right, exactly-once evaluation
|
|
385
|
+
without eagerly evaluating skipped operands.
|
|
386
|
+
|
|
387
|
+
Added independent conditional-region analysis and validation,
|
|
388
|
+
`fact-table/0.14.1` conditional facts, two 0.14.1 RulePlan families, and active
|
|
389
|
+
`conversion-plan/0.14.1`, `c-ir/0.14.1`, `generated-c/0.14.1`, summary, trace,
|
|
390
|
+
rule-set, and renderer identities. No Python syntax, primitive operation,
|
|
391
|
+
public policy, helper, runtime failure channel, allocation, ownership, cleanup,
|
|
392
|
+
or C IR node kind was added.
|
|
393
|
+
|
|
394
|
+
Preserved the sealed Phase 14A numeric policy and helper registry exactly.
|
|
395
|
+
Explicit 0.14.0 configuration retains its historical artifacts and placement
|
|
396
|
+
rejections; active sources that select no conditional region retain predecessor
|
|
397
|
+
generated-C bytes and output fingerprints. General exceptions, heap objects,
|
|
398
|
+
dynamic dispatch, closures, generators, async behavior, context cleanup, and
|
|
399
|
+
the broader class model remain excluded.
|
|
400
|
+
|
|
401
|
+
## 0.14.0 — Phase 14A bounded integer floor arithmetic
|
|
402
|
+
|
|
403
|
+
Status: Phase 14A sealed.
|
|
404
|
+
|
|
405
|
+
Added exact integer `//` and `%` for existing integer-like expressions when
|
|
406
|
+
the divisor is a direct signed integer literal in
|
|
407
|
+
`[-9223372036854775807, -2]` or `[1, 9223372036854775807]`. Zero, negative one,
|
|
408
|
+
`INT64_MIN`, Boolean, floating, dynamic, folded, calculated, and out-of-range
|
|
409
|
+
divisors reject deterministically.
|
|
410
|
+
|
|
411
|
+
Added separate numeric analysis and lowering, `fact-table/0.14` numeric
|
|
412
|
+
operation facts, the `phase14.numeric.floor_arithmetic` RulePlan family,
|
|
413
|
+
`conversion-plan/0.14`, `c-ir/0.14`, `generated-c/0.14`, and 0.14 summary and
|
|
414
|
+
decision-trace identities. The active numeric policy is
|
|
415
|
+
`phase14-proved-floor-arithmetic-v0.14`.
|
|
416
|
+
|
|
417
|
+
Activated the frozen `pycf.i64.floor_div@1.0.0` and
|
|
418
|
+
`pycf.i64.floor_mod@1.0.0` Phase 10 assets without changing their registry or
|
|
419
|
+
asset fingerprints. Each occurrence selects exactly one helper, and the
|
|
420
|
+
registry emits each selected helper once. Deterministic signed-64 temporaries
|
|
421
|
+
preserve left-to-right, exactly-once operand evaluation.
|
|
422
|
+
|
|
423
|
+
The admitted divisor proof excludes C11 division by zero and
|
|
424
|
+
`INT64_MIN / -1`; no runtime failure channel, exception emulation,
|
|
425
|
+
arbitrary-precision runtime, allocation, or cleanup was added. Mathematical
|
|
426
|
+
fixtures close Python floor quotient, divisor-sign remainder, and the division
|
|
427
|
+
identity across the supported sign and boundary cases.
|
|
428
|
+
|
|
429
|
+
Preserved exact explicit Phase 13 conversion behavior and the unchanged module,
|
|
430
|
+
record, container, workspace, no-host-discovery, and source-only product
|
|
431
|
+
boundaries. Generated C was not compiled, linked, loaded, or executed.
|
|
432
|
+
|
|
433
|
+
Phase 14A is sealed independently. Broader Phase 14 remains closed pending a
|
|
434
|
+
new decision and explicit approval. Phase 15 has not started.
|
|
435
|
+
|
|
436
|
+
## 0.13.0 — Phase 13 static records
|
|
437
|
+
|
|
438
|
+
Status: promoted.
|
|
439
|
+
|
|
440
|
+
Added a deliberately narrow immutable-record subset expressed with one exact
|
|
441
|
+
top-level Python class shape. Accepted records contain 1–64 ordered `int`,
|
|
442
|
+
`float`, or `bool` fields, an exact structural `__init__`, direct fresh
|
|
443
|
+
function-local positional construction, and direct statically resolved field
|
|
444
|
+
reads.
|
|
445
|
+
|
|
446
|
+
Added `fact-table/0.13` record definitions, fields, initializers, instances,
|
|
447
|
+
bindings, and accesses; seven record RulePlans; `conversion-plan/0.13`; record
|
|
448
|
+
nodes in `c-ir/0.13`; `generated-c/0.13`; and 0.13 summary and decision-trace
|
|
449
|
+
identities. The active record policy is
|
|
450
|
+
`phase13-immutable-automatic-records-v0.13`.
|
|
451
|
+
|
|
452
|
+
Record lowering emits deterministic named C `typedef struct` declarations and
|
|
453
|
+
fully initialized `const` aggregates in automatic function storage. Arguments
|
|
454
|
+
are evaluated left to right and once before construction; field reads use
|
|
455
|
+
direct member access. No record helper or runtime is selected.
|
|
456
|
+
|
|
457
|
+
General methods, inheritance and the broader Python object model remain
|
|
458
|
+
unsupported. Records cannot be mutated, aliased, rebound, copied, escaped,
|
|
459
|
+
passed, returned, stored in containers, imported, or used across modules.
|
|
460
|
+
There is no heap allocation, null state, ownership transfer, or cleanup.
|
|
461
|
+
|
|
462
|
+
Adversarial hardening added binding-identity constructor resolution,
|
|
463
|
+
read-after-construction and complete fresh-local proofs, dunder-field and
|
|
464
|
+
annotation-builtin collision rejection, correct companion-module diagnostics,
|
|
465
|
+
cooperative record cancellation, exact const/member and field-type C IR
|
|
466
|
+
validation, manifest-bound provenance, and independent serialized record-fact
|
|
467
|
+
cross-validation. Historical `fact-table/0.12` module records retain their
|
|
468
|
+
exact shape; record linkage remains in Phase 13 evidence.
|
|
469
|
+
|
|
470
|
+
An initial working candidate was abandoned when an external compile-only
|
|
471
|
+
review triggered the declared no-toolchain rollback rule. The release candidate
|
|
472
|
+
was reseeded from a newly authenticated 0.12.2 extraction; the incident remains
|
|
473
|
+
recorded and is not rewritten as passing evidence.
|
|
474
|
+
|
|
475
|
+
Preserved the Phase 12 function-import profile, Phase 11 containers, Phase 10
|
|
476
|
+
helper registry, source-only product boundary, and PyCForge workspace safety
|
|
477
|
+
model. Explicit historical Phase 12 requests retain their 0.12 identities, and
|
|
478
|
+
class-free Phase 13 conversions preserve predecessor generated-C bytes.
|
|
479
|
+
|
|
480
|
+
The sealed 0.12.2 predecessor was authenticated before Phase 13 edits. Windows
|
|
481
|
+
11 laptop testing remains planned user feedback after all phases; this release
|
|
482
|
+
does not claim Windows execution. Phase 14 has not started.
|
|
483
|
+
|
|
484
|
+
## 0.12.2 — PyCForge workspace hardening
|
|
485
|
+
|
|
486
|
+
Corrected conversion-generation retirement, Save As destination validation,
|
|
487
|
+
unexpected worker failure recovery, visible module identity commits,
|
|
488
|
+
document-reorder controls, Unicode replacement navigation, keyboard access,
|
|
489
|
+
and failure-tolerant versioned presentation settings without changing the
|
|
490
|
+
sealed Phase 12 converter.
|
|
491
|
+
|
|
492
|
+
## 0.12.1 — PyCForge workspace
|
|
493
|
+
|
|
494
|
+
Introduced the optional professional PyQt5 workspace over the sealed Phase 12
|
|
495
|
+
converter, including explicit bundle navigation, Python and immutable C
|
|
496
|
+
editors, diagnostics and mappings, stale-output protection, and atomic linked-C
|
|
497
|
+
saving.
|
|
498
|
+
|
|
499
|
+
## 0.12.0 — Phase 12 explicit module bundles
|
|
500
|
+
|
|
501
|
+
Introduced the bounded 1–64-document SourceBundle profile, exact compile-time
|
|
502
|
+
direct-function imports, deterministic dependency ordering, and one generated
|
|
503
|
+
C translation unit without host module discovery or runtime initialization.
|