PyCForge 1.3.13 — Multiple Inheritance Conversion
Implementation and Linux verification; 15 October 2026
Baseline: the user's PyCForge 1.3.12 distribution

RESULT

Runtime mode supports multiple inheritance between declared classes, including
imported and re-exported bases, using Python's C3 method resolution order.
Existing single inheritance remains supported. Typed immutable records retain
their existing conversion contract.

Each class retains its own method declarations as well as an effective table.
Ordinary calls keep flat lookup; super follows the actual receiver's C3 order
after its lexical or explicitly supplied anchor. This reaches sibling overrides
correctly and avoids the flattened-parent lookup error in diamond hierarchies.
Constructors follow the same order. Source-controlled cooperative super calls,
defaults, keyword forwarding, decorators, closures, saved proxies and bound
methods retain their receiver and per-context state.

Subtype checks and annotations recognize all branches. Shared ancestors occur
once in C3 order and each field name has one instance slot. The first actual
field declaration in C3 order selects the annotation, with a subclass's own
declaration taking precedence. Annotation enforcement is PyCForge policy;
CPython itself does not enforce those annotations. Field/method name collisions,
duplicate bases and inconsistent C3 orders reject conversion with source
diagnostics and publish no C.

VALIDATION

- Complete collection: 1,828 tests and 4,546 subtests passed;
  64 documented skips across all 189 test modules. No unresolved failures or
  test errors remain. The collection ran in 26 groups. One old package-version
  assertion and one obsolete rejection of valid multiple inheritance were
  reconciled and their two complete test methods rerun successfully. Original
  failure logs, final rerun evidence and the reconciled summary are retained.
  Application source hashes were unchanged throughout the complete run.
- Focused inheritance suite: 29 tests and 191 subtests passed under GCC
  AddressSanitizer and UndefinedBehaviorSanitizer with halt-on-error enabled.
  LeakSanitizer was disabled on this host; no LeakSanitizer result is claimed.
- 160 seeded class graphs checked acceptance and complete method orders against
  CPython's type implementation. Native differential fixtures checked diamond
  and non-depth-first lookup, base ordering, constructor effects, decorators,
  lexical class cells, imports, fields and failure effects.
- A decorated diamond passed failure injection at all 128 allocation points,
  checking error propagation and release of every tracked allocation. External
  C callers supplied nine input pairs across two independent runtime contexts,
  verifying results, decorator state isolation and restored call frames.
- The separately installed wheel passed all 15 new inheritance tests. Its CLI
  converted a diamond, inspected a 1.3.13 artifact and rejected an inconsistent
  hierarchy without overwriting an existing C output.
- The offline corpus has 40 cases: 32 Python/C matches and eight expected
  unsupported cases. No unexpected result or network attempt occurred. All 40
  manifests passed their schema. No model training was performed.
- All 21 Help pages opened. The exact 55 Python examples, five API examples,
  three C callers, two module examples and three README examples passed.
  The class example now demonstrates a mixin. New inheritance search terms and
  normal/narrow class-page layouts were checked. No Help page was added.
- Wheel payloads match all 825 application files included in the wheel.
  The original 495 icon assets, licenses, launch entry point and dependencies
  remain present. The README is unchanged. The wheel remains pure Python.

BOUNDS AND PLATFORM COVERAGE

A combined hierarchy admits at most 64 distinct user classes, including the
subclass, plus object; at most 64 fields and 64 distinct user-defined method
names. A shared ancestor counts once. Existing argument, capture, arena memory,
work and call-depth limits remain active. MRO data is static C data and adds no
runtime MRO allocation or installation dependency.

Properties, static/class methods, custom descriptors, dynamic bases, builtin
bases other than object, metaclasses and general reflection remain unsupported.
Runtime C-IR proof validation and exact ForgeLens mappings remain unavailable;
the existing PYC4699 diagnostic remains. This is evidence for the tested bounded
profile, not a claim of universal Python compatibility or defect-free software.

Native comparisons used CPython 3.12.14 and GCC on Linux x86-64. Native Windows,
macOS, MSVC, clang-cl, Clang and PCFC11 execution were not performed. The skipped
tests comprise 18 unavailable historical predecessor checks, 12 unavailable
Clang checks, 33 unavailable PCFC11 checks and one inapplicable missing-PySide6
scenario. Platform-profile tests do not replace native platform acceptance.

REPRODUCTION

From the source directory:
  python -m pytest -q tests/test_multiple_inheritance_1_3_13.py tests/test_inheritance_1_3_8.py
  QT_QPA_PLATFORM=offscreen python -m pytest -q -ra --disable-warnings
  python tools/run_conversion_corpus.py --output new-corpus-run.json
  python tools/verify_conversion_documentation.py

Sanitizer runs additionally set PYCF_TEST_CFLAGS to:
  -O1 -fsanitize=address,undefined -fno-omit-frame-pointer -fno-pie -no-pie
with ASAN_OPTIONS=detect_leaks=0:halt_on_error=1 and
UBSAN_OPTIONS=halt_on_error=1:print_stacktrace=1 on this host.

The specification is specifications/multiple_inheritance_1_3_13.md.
Detailed evidence is in evidence/multiple_inheritance_1_3_13/.
The ZIP includes the complete source, current wheel and source archive in dist/,
tests, corpus fixtures, offline Help, specification and validation evidence.
Package checksums accompany the release. No PyPI publication was performed.
