PyCForge 1.3.49 — Faster authenticated workspace revisions
Prepared 2026-10-20 from the verified 1.3.48 source archive.

RELEASE SCOPE

This release addresses audit F05 and the unchanged-bundle portion of F06.
Ordinary text runs are scanned by a compiled regex in bounded chunks, visiting
newlines and astral characters to retain exact source and Qt UTF-16 positions.
Dense special-character text uses direct iteration to avoid match-object cost.
Cancellation is checked between chunks of at most 65,537 characters, including
a possible extra character to keep CRLF together.

The existing revision worker reuses one exact validated ConversionRequest,
CanonicalRequest and workspace-bundle fingerprint when source, identities,
primary/companion order and configuration are unchanged. Active selection and
disk bookkeeping do not trigger full-source serialization. Any changed request
is validated again. Converter submissions still independently canonicalize
at their boundary; no public API, fingerprint format or conversion semantics
have changed.

Indexes and bundle facts share the existing 32 MiB cache accounting ceiling.
The cache keeps one bundle, drops stale versions, handles entries too large to
retain, and releases retained source on removal/reset/close. This is an
internal cache budget, not a bound on whole-application memory or RSS.

The one-active/one-latest-pending worker and shared work budget remain intact.
No additional threads, multiprocessing pools or runtime dependencies are added.
All 144 converter files and all 10 Python-check analysis/ruleset files match
1.3.48 byte for byte. Save integrity and checker scheduling are retained.
Baseline source archive SHA256:
2540d56b0fe55f595239db4886ac003221c4e0d377cfbe0f69852d9a21ed41d4

MEASURED PERFORMANCE

Environment: Python 3.12.14, PySide6 6.12.0, Linux, QT_QPA_PLATFORM=offscreen.
Same-host, separate-process comparison against 1.3.48; approximately 896 KiB
of total source. Medians from 15 one-character edits and 25 unchanged builds:

  1 documents: one-document edit 123.53 -> 20.27 ms; unchanged 5.578 -> 0.011 ms
 16 documents: one-document edit 13.26 -> 6.26 ms; unchanged 6.260 -> 0.028 ms
 64 documents: one-document edit 7.51 -> 5.90 ms; unchanged 6.114 -> 0.081 ms

The 16-document unchanged revision previously serialized 1,853,101 JSON bytes
in four calls; it now performs zero canonical JSON calls. Changed bundles still
require complete canonical serialization. No edit-splicing index is claimed.
All exact revision/position fact digests agree across nine benchmark workloads.
Six position workloads include ASCII/BMP, astral/CRLF and dense special text.
Dense CRLF measured 17.40 -> 18.47 ms; dense astral 12.04 -> 11.07 ms. These
small-case measurements do not imply a universal speedup for every text shape.

A 2 ms Qt heartbeat remained active during 40 asynchronous large-document edits.
Maximum observed gap was 19.68 ms before and 8.59 ms after. These are host
observations, not UI timing guarantees or native-platform acceptance results.
Raw samples, methodology and exact-fact digests accompany the source archive.

VALIDATION

The 119-module broad run passed 1,481 tests and 3,032 subtests, with 13 skips.
It found 15 failures, including one Help-dialog focus subtest. All were caused
by one new Help search keyword exceeding the existing 48-character bound.
The keyword was split into shorter entries; validation bounds were retained.

Follow-up of all affected Help/startup modules: 46 passed and 489 subtests
passed. Dialog focus follow-up: 3 passed and 20 subtests passed. All initially
failing checks passed. Counts overlap the broad run and must not be added.
All 38 new revision tests passed in the broad run, covering invalidation,
source validity, exact Qt positions, configuration keys, cancellation, bounded
memory, sparse/dense scan transitions, reset and close.

The 13 skips are eight unavailable-Clang cases and five historical validators
requiring a sealed predecessor archive not supplied beside this tree. An
initial invocation through stdin was interrupted because multiprocessing spawn
cannot reload a stdin program; its results are excluded. The completed broad
run and follow-ups used the normal pytest module entry point. Raw logs retain
the initial failure and its resolution.

HTML HELP AND README

The 30-page HTML Help adds practical revision-reuse guidance and an API
embedding section covering synchronous conversion, callback thread affinity,
cooperative cancellation and request identity. Existing navigation order and
examples remain. All 30 pages open in Qt Help, offline links and fragments
resolve, and 53 searches reach the expected pages. All 81 documented Python
examples pass native comparisons (32 Typed and 49 Runtime); the 32 Typed examples
also pass separate-module compilation. Five API examples, four C callers, three
module bundles, three export examples and three README Python examples pass.
The changed sections were visually reviewed at 1220x850 and 900x680; text wraps
and navigation remains usable. Review screenshots are excluded from releases.

The README body is unchanged; only the top version advances.
All four approved image URLs, their order, banner widths and Crucible subtitle
remain intact. No new README links or development-status prose are added.

INSTALLED WHEEL AND DISTRIBUTION

The built wheel was installed into a clean target outside the source tree.
It passed fourteen smoke checks: save-conflict preservation, reviewed overwrite,
comparison default, workspace/About/startup versions, all Help footers, queued
checker admission/completion/release, exact revision reuse, cache cleanup, API
callback thread affinity and cooperative cancellation. Imported code resolves
to the installed target and reports 1.3.49.

The source README renderer check passes with exactly four approved image links
and no navigation links. Final strict twine and distribution checks, artifact
sizes and hashes are recorded in the external handoff report after packaging.

REMAINING ACCEPTANCE SCOPE

Large text insertion and QTextDocument layout still run on the GUI thread
(audit F07). Editing source still requires complete validation/serialization
and full indexing of the changed document. Native Windows/macOS interaction,
IME behavior, accessibility and display scaling require host-platform review.
Clang is unavailable here. No enterprise-readiness certification is claimed.

HANDOFF

CC alone uploads releases to PyPI. No upload or publication has been performed.
The authoritative final wheel/source pair and their byte sizes and SHA256 values
are recorded in the accompanying final verification report. The source-archive
copy intentionally excludes self-referential distribution hashes.
