PyCForge 1.3.7 — decorators and completion refinements
15 October 2026

Runtime conversion now supports decorators and decorator factories on top-level
functions, nested functions and ordinary methods, including constructors.
Decorator expressions are evaluated from top to bottom before defaults; their
results are applied from bottom to top. The final value is published only after
all applications finish. Wrappers can forward positional and keyword arguments,
retain shared state, and cross explicitly supplied module boundaries.

Method binding preserves wrapper identity and supplies the receiver to variadic
wrappers. Class-body decorator expressions and defaults can use earlier declared
methods, while method bodies and nested expression scopes retain their separate
lookup rules. Construction checks the final decorated initializer's return value.
External C callers obtain the decorated export through pv_top_function. Each
runtime context initializes its own decorators and captured state. Conversion
does not execute source programs or their decorators.

Completion now uses the active editor background and the existing syntax-string
color for its left selection marker. Hovered suggestions have a subtle contrasting
background and string-colored text. Hover does not change the keyboard selection.

The QTextCursor::setPosition out-of-range warning was reproduced when shortening
text with existing search, diagnostic or mapping highlights. Qt can signal cursor
movement before textChanged retires those old highlights. Highlight cursors now
normalize their ranges against the live document at creation. Completion also
discards replacement ranges that no longer fit the document and refuses edits
to a read-only source view. These checks preserve the existing selection,
completion, undo and redo behavior.

Verification

- All 16 decorator test groups passed under GCC AddressSanitizer and
  UndefinedBehaviorSanitizer. Coverage includes evaluation order, recursive and
  stateful wrappers, class-body scope, replacement values, method identity,
  constructor results, annotation boundaries, module re-exports, error effects,
  resource limits and context cleanup. An external C caller supplies nine input
  combinations across two isolated contexts. LeakSanitizer was disabled because
  this environment cannot inspect processes; no leak-inspection pass is claimed.
- The final rejection check passed one test and six subtests after separating a
  property fixture's field name from its method name. The fixture now checks the
  unsupported property itself rather than an earlier duplicate-name rejection.
- Focused converter regression checks passed 85 tests and 150 subtests across
  functions, Runtime values, modules, files, arena cleanup, earlier extended
  operations and conversion correctness.
- All 18 focused editor checks passed. They cover completion by keyboard and
  mouse in both source views, Unicode positions, shortening highlighted text,
  undo/redo, stale assistance and invalid replacement ranges. The checks capture
  Qt messages and reject any QTextCursor::setPosition warning in the reproduced
  cases. The actual themed Jedi popup was rendered and visually inspected;
  injected Qt pointer events verified hover on selected and unselected rows.
- All 21 Help pages opened in offscreen Qt. All 55 Python examples (33 Runtime,
  22 Typed), five API examples, three C callers, two module examples and three
  README examples passed. Help links, navigation and search passed. The revised
  function-decorator section was visually inspected.
- The 28-case offline corpus compares delivered 1.3.6 with this final application
  snapshot. Supported fixture matches increase from 16 to 21; seven cases remain
  explicit unsupported rejections. Both runs have zero unexpected outcomes and
  zero observed network attempts. Linux seccomp enforcement includes a blocked
  socket probe. All 329 recorded application source hashes match this release;
  41 corpus JSON documents passed their schemas.
- The installed wheel passed a Python/native-C comparison using stacked decorator
  factories, variadic wrappers, decorated methods and a decorated constructor.
  Typed conversion and all 21 installed Help pages passed. Its 828 RECORD hashes,
  819 application files, all 495 icons, version and dependencies were checked.
  Distribution hashes and source-preservation details accompany this report.

The full historical test suite was not rerun. The preceding 1.3.5 report records
20 pre-existing historical metadata/README/module-budget failure records; this
upgrade does not claim to resolve those checks. Verification used Linux x86-64,
Python 3.12.14, GCC and offscreen Qt. Native Windows/PowerShell and PCFC11 checks
remain outstanding. No PyPI publication was made.

Documentation and packaging

The approved README remains byte-for-byte unchanged, including its 1.3.4 heading
while conversion upgrades continue. SHA256:
28dec8e51de9f5a3e05ea06ec9528abadcc61f7914e2675a01066ca57ad6fc7f
Application and distribution metadata report 1.3.7. HTML Help retains its
21-page structure and 55-example count. Conversion coverage and boundaries were
updated within existing sections, without development-status sections or new
example collections.

All previous application files, icons, original README images, licenses and
dependencies are retained. The 91 historical generated documentation screenshots
remain excluded, and no new verification screenshots are bundled. Build caches
and older embedded distributions are excluded. The current wheel and source
archive are in dist/. Runtime dependencies remain PySide6, numpy, numba, jedi
and autopep8. The source-only corpus is excluded from the wheel.

Class decorators, static/class methods, properties, arbitrary descriptors,
function metadata attributes and implicit standard-library imports such as
functools remain unsupported. Each function permits at most 64 decorators.
Existing argument, capture, memory, work and call-depth limits remain active.
Exception recovery, generators, async/await, inheritance, nested classes,
mutable module globals, binary files and general third-party API conversion
remain outside this upgrade. C-to-Assembly is deferred. Runtime C-IR proof
validation and exact ForgeLens mappings remain unavailable.

Raw checks and installed/distribution records are in evidence/decorators_1_3_7.
The corpus comparison is training_corpus/comparisons/1.3.6-to-1.3.7.json.
