PyCForge 1.3.46 — Typed records in branches and loops
Prepared 2026-10-20 for CC's own PyPI upload.

CONVERSION UPGRADE
- Record locals can be initialized in if/elif/else, for/while and loop-else
  regions. Every record read requires initialization on every continuing path.
  Early returns, owned breaks, continue and zero iterations are accounted for.
- Replace a local or record parameter with a value of the same exact class.
  Earlier aliases retain their field values. Constructor arguments and complete
  right-hand expressions run before replacement. Chained assignments, flat
  literal unpacking and same-class swaps preserve their evaluation order.
- Imported classes, record-returning functions, nested record fields and fixed
  record collection elements work with these local-value rules. Record loop
  targets remain fresh read-only names confined to their own loop body.
- Replay the published record-flow proof against normalized source. Reject
  missing/forged evidence and plans without their required obligations. C IR
  permits exact nominal whole-value copies while rejecting all field writes.
- Preserve const aggregate output for simple direct single assignments. Keep
  earlier explicit Typed profiles and their original limits. No Runtime
  implementation, workspace implementation or runtime dependency changes.

LIMITS
The proof is conservative about constant conditions, guaranteed loop counts
and unreachable source. A loop alone does not prove that a local exists after
it; initialize before the loop or cover normal exhaustion and every break.
Record flow is limited to 128 nested regions, in addition to existing source,
layout and collection bounds. Different-class replacement, field mutation,
record identity/equality/truth tests, nested captures, redeclared or valueless
record annotations, collection aliases/replacement and unsupported keyword
record calls remain rejected.

DOCUMENTATION AND README
Installed HTML Help now explains branches, loops, parameter replacement,
initialization diagnostics and preserved aliases, with two complete examples.
Search keywords include record control flow, reassignment and initialization.
The README differs from the approved 1.3.45 source only in its top heading:
# PyCForge v1.3.45 -> # PyCForge v1.3.46
Its prose, four exact image URLs, image order, banner widths, conversion table
and historical labels are unchanged. The rendered README check passes with
four images and zero authored navigation links. AGENTS.md and the clarified
PyCForge-README-Guidelines.txt remain in the source archive.

VERIFICATION
- 47 dedicated new tests pass. They cover accepted branches/loops/returns,
  nominal parameter replacement, nested/imported records, preserved aliases,
  swaps, unsafe neighbors, proof tampering and deterministic exports.
- The main affected regression run covered 67 files: 833 tests and 843 subtests
  passed, with 12 existing skips. Three current-profile snapshot expectations
  needed updates for v1.7 metadata; the corrected checks all pass in the
  follow-up run. No historical conversion-output expectation was changed.
- The follow-up contract/workspace run passed 79 tests and 30 subtests, with
  5 existing skips. It includes the corrected snapshot checks, module save
  identity, project restoration and Qt separate-module export regressions.
- Help/release/distribution source checks passed 34 tests and 477 subtests.
  The internal no-hosting instruction file is excluded from a product-brand
  text scan because its purpose is to prohibit that host; README checks retain
  their exact four-image and no-extra-link rules.
- Existing record regressions and integration checks also pass. Overlapping
  reruns are retained as evidence and are not added into a single inflated total.
- Native C was checked with GCC 13.3.0, C11, strict warnings, O0 and O2, plus
  AddressSanitizer and UndefinedBehaviorSanitizer. Ten record-flow functions
  were compared with Python for 120 input/function combinations. Separate
  module objects and C callers pass; wrappers verify exactly-once left-to-right
  calls and branch selection during replacement. Two new Help examples pass
  six additional native result checks.
- Help was rendered and reviewed in Qt offscreen. README rendering and exact
  baseline comparison pass. Test logs are under evidence/record_control_flow_1_3_46.

Verification used Linux x86-64, Python 3.12.14 and Qt offscreen. Native Windows
and macOS were not run. The full repository suite was not run. The v1.3.45
module-save/project-restoration implementation is retained. No PyPI upload was
performed; CC alone uploads from CC's own computers.

Finished-package verification, installation checks and SHA256 values are
appended to the accompanying handoff copy after building the final archives.
