PyCForge 1.3.31 — Runtime text bookmarks and exclusive creation

Release scope
Adds tell() and bounded seek() to the existing scoped UTF-8 Runtime file
workflow. Converted code can retain a bookmark on an open handle, read ahead,
restore that position, rewind to zero, retain the current position, or seek to
EOF. Unicode and universal-newline lookahead are preserved. Borrowed handles,
aliases, imported helpers, and bound methods share the cursor and bookmarks.

Adds literal mode "x" with explicit encoding="utf-8". C11 exclusive creation
protects an existing destination from truncation. EEXIST maps to the admitted
FileExistsError exception; OSError and Exception also catch it. Creation and
subsequent writes are not a transaction: failed writes may leave a partial new
file. Conversion, validation, and scanning do not open source-program paths.

Boundaries
- Text bookmarks are opaque integers, not character indexes or portable byte
  offsets. Their values may differ from CPython. Use them unchanged on the
  same still-open handle. Arbitrary nonzero unrecorded positions are rejected.
- Supported seek forms: seek(bookmark[, 0]), seek(0), seek(0, 1), seek(0, 2).
  Nonzero relative seeks, binary/update modes, arbitrary context managers,
  filesystem replacement, and general library conversion remain excluded.
- File iteration disables tell/seek(0, 1) until iterator exhaustion or a
  successful absolute/end seek. Breaking a loop or calling Runtime flush
  does not restore telling. Use readline when taking per-line bookmarks.
  The flush restriction is deliberately more conservative than CPython.
- Positions require a seekable host stream and must fit C long and Runtime
  int64. This is not a promise of large-file offsets beyond the host's long
  range; Windows C long commonly has a smaller range than Linux C long.
- A file must not be externally changed/replaced while its bookmarks are used.
  There is no locking, filesystem snapshot, or I/O timeout.
- Each tell/seek consumes one file operation. Reread bytes are charged again;
  seeking never resets read, operation, work, or memory budgets.
- Distinct nonzero bookmarks use arena records; repeated positions reuse
  records. Closing frees all records, including during failure cleanup.
- Explicit collection still refuses open handles. Closed handles remain
  traceable after bookmark records are released. No automatic in-call GC.
- Internal PFile layout changed. Regenerate C and rebuild integration callers
  together. PC/PV layouts and the existing C calling conventions are unchanged.

Measured verification
1. Initial native suite: 13 tests and 5 subcases passed (58.50 seconds).
   Witnesses cover Unicode/newline bookmark round trips, current/end/EOF,
   bound methods and supplied modules, iterator state, write/append/exclusive
   behavior, existing-file preservation, invalid/closed calls, unknown-mark
   refusal, read and operation budgets, bookmark release plus collection,
   injected ftell/fseek/fflush failure, and allocation-failure cleanup.
2. Final ASan/UBSan suite: all 13 tests and 5 subcases passed (118.99 seconds),
   including the final Unicode exclusive-output filename. Flags: -O1
   -fsanitize=address,undefined -fno-omit-frame-pointer -fno-pie -no-pie.
   Both sanitizers halt on errors; LeakSanitizer disabled for host compatibility.
3. Regression selection: 121 tests and 439 subcases passed (372.41 seconds).
   Covers existing file workflows, explicit memory collection, Runtime
   exceptions/provenance, actual Qt conversion navigation, scan freshness,
   quick conversion diagnostics, and Help contracts. No complete historical
   test-suite claim is made.
4. Installed-wheel checks: 44 existing provenance/navigation/collection tests
   passed; 2 selected new file tests separately passed (11 other new tests
   deselected in that installed check). New installed tests cover shared
   bookmarks across modules and exclusive collision preservation/cleanup.
   All 858 packaged application files match source and installed bytes.
5. HTML Help verifier: 26 pages in 5 categories; 63 Python examples comprising
   41 Runtime and 22 Typed native comparisons; 5 API examples; 4 C callers;
   2 module bundles; 3 unchanged README examples. All passed. New search terms
   resolve to the bookmark/exclusive-creation page. Final normal/narrow/table
   and example renders were inspected. A final prose clarification about flush
   does not change any of the verified executable examples.
6. Distribution checks pass for the pure-Python wheel and source archive.
   Wheel: 868 members, 55 icons/495 icon assets, GPL-3.0-only. Runtime support
   remains embedded in generated C; no Python interpreter is required by it.
   Ting compiler is not packaged. Source archive retains review material and
   TingRuleSpec sources, as in the established release layout.

Size and preservation
For identical source "def main(): return 0" (with normal newlines/indentation),
generated C grows from 405,132 bytes in 1.3.30 to 408,341 bytes in 1.3.31:
+3,209 bytes, approximately +0.7921%. This measures C source, not executable
size, execution speed, or process memory consumption.

All 126 UI Python files are byte-identical to 1.3.30. The existing themed
controls, save flow, split Tools access, compact scan menu, diagnostic access,
and stale-result invalidation remain in place. Only HTML resources/catalog
change in the IDE package. Dependencies remain PySide6, NumPy, Numba, Jedi,
and autopep8. README is byte-identical, SHA-256:
81408b884ec93411cd88f9734cc8cffc79bcd65751bcdfe092ea33e41addb638

Host and limits of verification
Python 3.12.14, Linux, GCC, Qt offscreen. Native Windows/MSVC,
clang-cl, and PCFC11 acceptance has not been performed. The specification
includes Windows checks for Unicode filenames, newline translation, bookmark
restoration, collision preservation, and host offset limitations. No PyPI
publication occurred. Runtime structural validation is not a proof of semantic
equivalence for arbitrary Python or every runtime input.

Artifacts
pycforge-1.3.31-py3-none-any.whl
Wheel SHA-256: 69d4be9a30172cda68a263e0b74c505d74c127249cd3b942cf403f8e2285efca
pycforge-1.3.31.tar.gz
PyCForge-1.3.31-Verification.txt
Source contract: specifications/runtime_file_positions_1_3_31.md
Evidence: evidence/runtime_file_positions_1_3_31/

Remaining conversion work
Separate C-module exports, binary/update file profiles, Typed record boundaries,
and automatic collection with explicit live-temporary roots remain separate
upgrades. No embedded comment scripting language is introduced here.
