PyCForge 1.1.7 — engineering review and release evidence
13 October 2026; based on the supplied 1.1.6 source distribution

RESULT

HTML HELP REVIEW — 13 October 2026

The existing offline HTML Help system is retained. No chat interface or new
runtime dependency was added. All 20 pages were read for feature accuracy,
ordering, cross-links, practical examples, platform instructions and limits.

Corrections cover installation dependencies and virtual environments, editor
commands, scope-aware rename, regex capture replacement, post-paste search,
folded navigation, temporary fold state, gutter Copy, split views, palette,
source-bundle search and session-only conversion history. The quick reference
now includes omitted actions, fixes Windows Redo guidance, removes a duplicate,
and uses two-column tables that remain readable in a narrower dialog.

Typed examples now state their expected results. Added complete compiled C
callers for typed add, runtime greeting and owned file reads; fresh-default and
live-dictionary-view examples show practical use of the supported runtime forms.
The companion HELP.md uses the actual Typed/Runtime selection actions.

Qt rendering exposed a font fallback that displayed code proportionally when
the requested desktop fonts were absent. The Help stylesheet now requests a
portable monospace family and tighter code-line spacing. Rendering preserves
all example text. Page titles, previous/next labels, topic anchors and search
keywords were checked and corrected where needed.

All 20 HTML Help pages reviewed against current features and interfaces.
50 Python conversion examples compared with generated C: 22 typed, 28 runtime.
3 Python API examples converted and compiled; 3 complete C callers built and ran.
The file-read caller also passed its missing-file error path.
61 rendered code blocks retain the exact example text; regex/format examples passed.
272 local page/fragment links checked; 16 Help search queries passed.
Normal and narrower Qt Help layouts inspected; code uses a monospace font.
No horizontal reader overflow at either 1,220-pixel or 900-pixel dialog widths.
Final full suite: 1,501 passed, 4,098 subtests passed, 19 skipped; zero failures.
Elapsed 231.19 seconds on Linux Qt offscreen. Native Windows checks remain pending.
Editor/converter Python and C source, dependencies and README are unchanged.
See evidence/help-review/ for raw example, suite, layout and installed-package checks.

Qt platform-shortcut reference used in this review:
https://doc.qt.io/qt-6/qkeysequence.html#standard-shortcuts

The ten reproduced editing defects have regression coverage and are repaired
or safely refused. The main measured performance failures are substantially
reduced. This candidate adds bounded analysis reuse, process isolation, shared
work admission, cancellation, and reliable empty-workspace cleanup.
It is not a claim that every possible editor defect has been eliminated.

Complete-source gate before the HTML Help review, including the gutter navigator
and earlier UI follow-ups: 1,501 passed; 4,074 subtests passed; 19 documented skips; no failures
or errors. Elapsed 228.14 seconds. The navigator has 26 dedicated cases.
These are Linux Qt offscreen results; native Windows acceptance remains pending.

Full source suite before the UI follow-ups: 1437 passed;
4071 subtests passed; 19 skipped;
zero failures/errors. Elapsed 213.41 seconds. The skips are 18 unavailable
historical predecessor artifacts and one inapplicable missing-PySide6 case.

Follow-up UI review: completion retained syntax formats, selection overlays,
mapping-visibility settings and editor focus. Opening the existing context menu
dismissed completion and preserved its actions. Explicit formatting retained the
highlighter and visibility setting; Undo restored the exact original source.
Completion and parameter hints inherit PyCForge's steel theme.

The visual check found a single-signature tooltip escaping defect: Qt displayed
an escaped apostrophe literally because the text lacked an HTML marker. Explicit
rich-text markup repairs the display while retaining escaping of source text.
The follow-up regression compares rendered tooltip pixels with a literal-quote
reference. Focused editor, productivity and theme checks after this correction:
73 passed; 77 subtests passed; zero failures. The full suite was not repeated
for this display-only change. Native Windows visual acceptance remains pending.

Folding follow-up: the previous candidate allowed completion to survive a gutter
fold when the caret offset and document revision did not change. Delayed worker
replies and a pending typing timer could also reopen assistance after collapse
or reveal. Ten initial reproductions failed before the correction.

Actual fold visibility changes now notify both synchronized source views before
layout changes. Editor assistance stops its typing timer, cancels outstanding
requests, discards publication authority and completion choices, and dismisses
both the list and parameter tooltip. Reopening a function cannot revive an old
reply; fresh assistance remains available. Source text and Undo are unchanged
by folding. Nested fold state and caret relocation out of hidden bodies pass.

After the folding correction: 152 tests and 98 subtests passed, zero failures,
in 31.10 seconds. This selection includes 15 folding-specific cases, editor
regressions, responsiveness, multiple-cursor editing, theme, source-structure,
visibility and existing fold-control checks. The full source suite was not
repeated. These are Linux offscreen Qt results, not native Windows acceptance.

Find/replace and paste follow-up: six defect categories were reproduced and
corrected. Find navigation now reveals matching folded bodies without opening
unrelated functions. Fold cleanup follows actual QTextBlocks after paste, cut
or multiline replacement, preventing invisible orphaned paragraphs after line
numbers shift. Selection-only search retains pasted replacement text regardless
of the original selection direction. Enter visits the first eligible match
before advancing, including zero-width regex matches.

The search bar gives its fields separate rows, wraps options in narrow panes,
and keeps capped counts compact; the tooltip and accessible description retain
the exact total and replacement restriction. The themed full-window check used
a 427-pixel-wide bar; automated parent-layout checks cover 420 and 600 pixels.

Literal and regex replacements, plus reviewed open-document batches, now refuse
more than 1 million changed characters before modifying any document or opening
an Undo group. This bounds removed plus inserted text, not total document size.
An oversized bundle preview disables Apply. The limit is not a latency guarantee
for admitted work. A 500-match, 4,000-character replacement formerly inserted
about 2 million characters in a roughly 973 ms blocking call; the corrected
full-window probe refused that batch in 1.16 ms with the source unchanged.

After these corrections: 189 tests and 98 subtests passed, zero failures, in
40.13 seconds, including 22 new regression cases. Earlier runs recorded 15
failing reproductions across the main, first-match and bundle checks. Stale
search replies, UTF-16 positions, plain-text paste from a rich clipboard, invalid
regex recovery, Escape from the replacement field, split views and exact Undo
passed. The full source suite was not repeated for this follow-up.

Remaining paste latency: in one Linux offscreen full-window probe, pasting
109,092 characters took 180.18 ms; the next key dispatch took 1.80 ms. These are
single-call timings, not p95 or input-to-display results. Source insertion and
layout still run on the GUI thread. Large pastes can pause briefly; these checks
do not establish that every paste, machine or native Windows session is smooth.

Gutter navigator follow-up: right-clicking the Python line-number/fold area now
opens a frameless Classes & Functions tree for the originating document. It
retains nested ownership, including methods, nested classes/functions and async
functions. Source is parsed as data in a bounded on-demand worker; no new library
or typing observer is added. Limits are 1 million characters and 4,096 retained
definitions. Invalid syntax is reported explicitly; identity/revision guards
reject stale publication, copying and navigation. Closing cancels pending work.

Single row selection does not navigate. Double-click/Enter reveals covering
folds and navigates the originating source pane. The left title-bar Copy icon
copies source directly from authenticated ranges, including parenthesized and
multiline decorators, docstrings, final-line comments, trailing indented body
comments, original indentation and the document's line endings. It does not
change either split view's cursor, selection, scroll, folds, carets or Undo.
The temporary copy label appears immediately beside Copy in the title bar;
a reserved title slot prevents layout movement and restores the normal title
when feedback expires. Custom class/function glyphs use the steel palette;
Open/Save and navigator tree backgrounds share the same stylesheet selectors.

Large trees populate in batches of 128 rows, yielding between batches. A local
4,096-row probe is recorded in evidence/navigator-followup/observations.json.
Those timings include other tests running on the same host and are single-run
observations, not isolated benchmarks or native input-to-display guarantees.
Worker shutdown was also hardened after testing immediate owner destruction:
terminated QProcesses remain owned until Qt observes their exit, without late
callbacks into deleted UI timers or synchronous waits on the GUI thread.

Navigator-specific checks cover exact copying, decorators, CR/LF/CRLF, Unicode,
conditional/nested definitions, no source execution, syntax and size bounds,
both split views, selection versus navigation, stale replies, cancellation,
worker reuse, shutdown, feedback geometry/expiry, and on-demand-only work.
The final navigator count is 26 cases. A wider editor/dialog selection passed
239 tests and 187 subtests before the final focus and maintenance adjustments;
the complete final-source suite result follows in this report's release record.

The first expanded full run identified two maintenance failures: README length
and the source-command module's size budget after earlier folding changes.
README prose was tightened with links preserved; duplicated minimal-change
scanning was consolidated in the existing pure text helper, and unused code
removed. The installed verifier now reports its actual OS/Qt platform and
also exercises navigator Copy and Go To from the rebuilt wheel.

Before these UI follow-ups, the installed wheel passed desktop startup, numeric warmup, six Ting agents,
20 Help pages, Typed and Runtime conversion, multiple-cursor Undo, persistent
editor-worker reuse, and spawned outline analysis/reaping. Documentation
validation passed 47 Python examples, three API examples, three README
examples and 26 native generated-C comparisons against Python.

PERFORMANCE — SAME LOCAL HOST, OFFSCREEN QT

Latency is milliseconds. Typing workloads use 20 samples per combination;
occurrence selection uses three samples. These are dispatch/event-loop
measurements, not physical key-to-visible-display measurements.

256-occurrence selection, median: 855.30 -> 5.93 ms.
That operation was about 144 times faster in this run.
20k-character, one-caret dispatch + events median: 13.43 -> 2.46 ms.
20k-character, 256-caret dispatch + events median: 34.88 -> 13.25 ms.
200k-character, 256-caret dispatch + events median: 24.99 -> 14.01 ms.

During three 100k-character outline jobs, the former 192–256 ms maximum
event-loop gaps became 10.76–19.15 ms. Typing p95 during those jobs was
1.29–1.94 ms. Each current outline published exactly once.
The predefined local latency checker passed. Raw samples include maxima;
a passing p95 budget does not mean every sample is below that budget.

Full MainWindow, with normal UI and observers connected:
  Characters   Carets   Dispatch p95   Dispatch+events p95   Worst total
       20000        1           2.38                  5.96         50.60
       20000      256          14.07                 18.20         19.64
      200000        1           2.73                  4.82          8.84
      200000      256          17.01                 21.08         21.57

The first full-workspace case included a 50.60 ms worst total sample. This
outlier is retained, not averaged away. Cold-start/first-input latency still
deserves profiling on target hardware. Undo restored exact source in all four
full-workspace cases. There is no corresponding full-MainWindow 1.1.6 baseline.

IMPLEMENTED ARCHITECTURE

Qt owns widgets and QTextDocuments on the GUI thread. Background services
receive immutable strings; published results must still match current identity.
The outline now extracts an AST symbol hierarchy without building conversion
IR. Its persistent spawned process is supervised by a coordinator; one I/O
thread handles byte transport so a blocked send or partial reply cannot disable
cancellation. Messages are bounded JSON, with no object deserialization. The
parser accepts at most 1M characters, retains at most 4,096 candidates and has
a 5-second execution deadline. Cancellation terminates and reaps active parsing.

Revision indexes stay on their existing thread, with cancellation during
scanning and reuse of unchanged documents. Threads still share the GUI
interpreter GIL; threading alone is not treated as CPU parallelism. A shared
budget admits one or two expensive jobs, prioritizes explicit commands over
assistance and passive observers, and defers passive admission for 180 ms
while typing. Already-active work is not preempted. This budget covers the
integrated services, not every legacy thread or every native library thread.

Cache accounting budgets: revision indexes 32 MiB; outline candidates 16 MiB;
editor reply cache 8 MiB and at most eight entries per worker. Keys authenticate
exact source and document identity; reply reuse verifies exact request bytes,
including options and cursor. Qt consumers share one current text snapshot
per buffer, invalidated by edits and Undo. Closed documents are evicted; closing
the last tab clears both analysis caches and closes the outline process.
These budgets do not cap total RSS, Qt undo history, active payloads, Jedi
internal memory, or interpreter/native allocations. Long-session RSS is pending.

Caret merging uses a sorted sweep; selecting occurrences installs the result
once. Selection repaint waits until the edit batch finishes. Gutter painting
only reads authenticated cached folds. Large text replacement cannot reattach
highlighting during a transient empty document. Retired Qt buffers disconnect
their snapshot callback and retain Qt ownership until both views detach.

CORRECTNESS LEDGER

F01: Physical modifiers retain multiple carets; repeated real Ctrl+D works.
F02: Unsafe inheritance-method rename is refused before preview/application.
F03: Class-private name-mangling changes are refused.
F04: Ambiguous equivalent Unicode identifier spellings are refused.
F05: Decorated-function parameter rename is refused when binding is uncertain.
F06: A third quote in a comment/string inserts only the requested character.
F07: Mid-identifier completion replaces the existing identifier tail.
F08: Selection formatting preserves unselected lines; crossing edits refuse.
F09: Definition offsets count physical CR/LF lines, not form-feed separators.
F10: Atomic saves preserve existing permission mode and symlink identity.

Rename remains document-local. Safe refusal is deliberate: this release does
not implement a whole-project override graph or dynamic-reference analysis.
Formatting retains AST-equivalence checks. All applied text changes retain
Undo support and stale-preview rejection. Save tests establish POSIX permission
mode behavior, not complete Windows ACL preservation.

Additional regression cases cover split-view document retirement, close/reopen
cache cleanup, 300k-character replacement, Unicode multi-caret Undo, exact cache
identity/eviction, source-generation freshness, bounded outline output, blocked
worker input pipes, active cancellation/reaping, shared admission priority,
queued deadlines and deadlines surviving an older process exiting.

RELEASE SCOPE AND REMAINING ACCEPTANCE

All 121 converter files and installation dependency requirements are unchanged
from the supplied 1.1.6 baseline. The wheel/source payload and RECORD counts are recorded with the verified artifacts.
Both approved README screenshot URLs are preserved. The accompanying source
archive, patch, specifications, scripts and evidence make the changes reviewable.
Package integrity checks are recorded in the bundle verification report.

Native Windows is still pending: real modifier/AltGr/IME input, pythonw/spawn,
clipboard, DPI/multi-monitor menus, linked paths/ACLs, long-session RSS and
maximum-workspace behavior. Linux offscreen timings cannot establish those
results. The Windows checklist is included. No PyPI publication was performed.

Reproduction: install the supplied wheel, run verify_installed.py, then
benchmark_editor_responsiveness.py, benchmark_editor_responsiveness.py structure,
benchmark_workspace_typing.py, and check_editor_responsiveness.py results.
Use QT_QPA_PLATFORM=offscreen for the recorded Linux setup. The source archive
contains the full pytest suite and specifications/editor_responsiveness_1_1_7.md.
