Repository navigation
Retain followed transcript paint and unify physical-run lifetime - #1393
Merged
Merged
Conversation
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
trissim
force-pushed
the
perf/live-toad-lifetimes
branch
from
November 1, 2026 06:55
033e2bf to
c08b219
Compare
trissim
force-pushed
the
perf/live-toad-lifetimes
branch
from
November 1, 2026 19:08
0264972 to
8739487
Compare
trissim
force-pushed
the
perf/live-toad-lifetimes
branch
3 times, most recently
from
November 1, 2026 22:41
615d5bb to
3475eae
Compare
trissim
force-pushed
the
perf/live-toad-lifetimes
branch
9 times, most recently
from
November 2, 2026 16:11
644dd37 to
e06698c
Compare
|
debt-src at db8a6aa passes. Warn-only, never blocks (3) |
trissim
enabled auto-merge
November 2, 2026 16:15
trissim
force-pushed
the
perf/live-toad-lifetimes
branch
from
November 2, 2026 18:03
8498bac to
db8a6aa
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Current delivery: db8a6aa
35 commits; 27 changed files; +2971/-1466.
Directed check contract
Tristan directed the required protection setting to
NRA gatein56953.The superseded8498
Debt ratchetjob rename is undone. The actual jobnow publishes
NRA gate; Dispatch owns the protection-setting change.No protection setting was changed by this PR. Current-main rebase
preserves all35 authored commits unchanged by range-diff. Tools, tests
and the workflow match171 byte-for-byte; its28-control run and hosted
success remain evidence at171, not a new execution at this head.
Current-head hosted status and actual merge are read separately.
Saved paint and current read metadata
Before: reusable serialization recreated suppliers and independent commit paths
could acquire one destination while publishing another. After:
ContentAddressedRenderTasksupplies content identity independently of storage;TranscriptPageRenderTask(ReusableStorage, ContentAddressedRenderTask)retainsoriginal suppliers and attaches each actual read's page metadata. FieldCodec's
declared ContentExclude projection distinguishes content from read annotations.
PreparedPageCommit and PreparedAppendCommit own acquisition and publication as
one family. Shared CommitPlan behavior chooses the source member once; a source
replacement retries through the replacement member. A held reader keeps its
paint; a followed append retires live blocks only after successful destination
drawing and final current-source checks. The historical source trace and controls
below explain the exact guard and cancellation cases.
Observation imports belong to startup
The rejected644 packet could select a tools directory inside a running frontend.
That path is removed. ObserveOperation owns module-location validation directly;
its packets carry resources and process identity. OperationProgram freezes the
measurement dependency and declared package layout before startup, with owned
initializers preventing namespace merging. MeasuredStartOperation composes with
installed and strict-candidate startup/admission through the existing MRO.
Deleted in this correction: the205-line injection controller and315-line remote
collector, plus their current executable references. The correction totals
+114/-658 across8 files. Historical immutable53/644 archives and failed original
runs remain retained. Ordinary observations write data, never select new code.
Evidence and remaining application work
Module-identity controls at171: 28 passed in0.99s, rc0, host lease acquired and
released. The two new controls use Python's actual PathFinder to establish that
both measured MROs resolve the meter from their frozen owned package. Existing
controls verify observation-only decoding, resource changes, candidate admission
and source-owned painted replies. Artifacts:
pi-ui-performance/observer-module-49{,-pytest}.logand its inputs/rc records.The e066 hosted gate rejected five module-name copies.171 derives those
identities from actual imported ModuleType objects and accesses their
declared spec; the mandatory ToadApp import already supplies loaded-app
evidence. The added control observes real stdlib ModuleSpecs, accepting
their actual location and rejecting foreign-runtime and empty selections.
The original27-case/e066 epoch remains retained. Hosted status is read
separately; this source/control result does not claim a green gate.
The corrected known-gap oracle previously passed once in16.21s: read acknowledgement
stays blocked until native destination paint and source settlement. Its original
source snapshot and failed predecessor remain in gap-contract-27/prepared-current-10.
All32 commits survive the current-main rebase unchanged by range-diff.
The exact-head source verdict is recorded. Installed physical performance and the
configured read/edit/preservation journey remain application work after useful
landing; these controls do not claim those results. The tab-return BlockPosition
reader defect identified after1408 is owned here as subsequent work.1399's useful
changes are retained until verified disposition after this landing.
Assumed: Python ModuleSpec locations establish provenance, not hashes of loaded
code. The meter records UI/input-to-driver handoff rather than terminal pixels.
Historical capture15 remains partial evidence and its input is never replayed.
Historical implementation and evidence: original heads and scopes retained
Current source:
8194baada19dc5ce0e989159b4f32fa8cd7d31ee28 commits;25 files,+2816/-838. Rebased onto current main and pushed; local=remote independently matched in overlay-evidence-publish-19.log. Latest commit changes only the overlay-sensitive source test marker and the retained capture/control documentation. Not merged, installed or whole-PR accepted.
Correction: source rows retained, marker masked by a designed overlay
Closed-prefix geometry09 reproduced the red on immutable metadata08 source. The same acquired supplier retained3 cached rows at unchanged page/window regions. Painted row30 changed from
CLOSED_PREFIX_MUST_SURVIVEtoCLOSED_PREFIX_MUST_S ↓ Back to bottom · Esc: the existing3-row floating screen control masks the suffix. The earlier claim that the source paint disappeared was too broad. The long-marker failure remains retained. The test now uses a short distinct marker clear of the control; page/fragment identities, reader equality, no-successor paint and failure checks remain. No CSS, source-admission or reader workaround.Current-source control10 on22d plus its retained uncommitted marker/doc patch, Core946 and recorded current library paths: 5 passed/1 failed in93.57s, rc1, host lease released. Both closed-prefix following modes, live-message coverage, fresh read metadata/original supplier sharing and restyle passed. The known-gap case still fails
assert not history.drawn_end_moreimmediately after publication, before lookahead. It remains my open source-publication obligation. These controls predate the latest rebase and do not establish exact8194, installed or complete acceptance. The independent Core rewrite-prefix witness remains with Commander; the UNKNOWN fixture operation remains unapplied, unreplayed and open.Capture15 is retained partial evidence, not a performance pass
The exact14f/Core946 prepared runtime reached saved history, Ready, focused composer and an actual busy/live ResponseStream matching real published st cells. One fresh input, no replay. Held PageUp/PageDown, reversal and End were dispatched. The End image still shows old history/Back to bottom, so End-to-tail is not proved. The subsequent tab-away predicate incorrectly compared workspace
app.current_modeand only one tab was visible. This is a harness/setup failure, not a proved product tab defect.No frame-meter.json survived exceptional teardown. No frame or input-to-paint median/p95 is claimed. The CPU recording is partial:741 samples,0 sampling errors, then selected-process-birth-ended before its24s request completed. Video/screenshots and retirement records are retained, not relabelled complete performance or preservation evidence. docs/performance/scroll-series.md now records those limits and the09/10 source epochs. Protected14/15 inputs/roots remain untouched.
The next1408 question is actual painted reader position across a late first styled thought above a non-following reader, not scroll_y alone. A deterministic native-publication control was prepared against14f: an inherited test gate delays the real first thought render, then calls the unchanged real styling/row/layout path. Attempt11 failed before lease/test execution because I used the wrong TestLease constructor. Attempt12 used current().held() and released the host lease, but failed before test collection on unrelated platformdirs plugin auto-discovery. Attempt13 reuses that unchanged prepared14f control with the established explicit asyncio/timeout test-plugin recipe; its result is not yet claimed here. Neither setup failure is a reader verdict. No provider or physical input is involved.
Installeded110/Core,51cf/Toad andda87/Textual are a separate epoch, not this source. No duplicate install. Remaining: known-gap publication, rewrite witness/admission, unresolved fixture operation, actual1408 painted-position verdict, tab-identity/setup and meter exceptional-close repair, configured read/edit/hidden/reopen/selection/editor/draft/undo preservation and complete physical performance acceptance.
Assumed: the existing floating control is allowed to mask underlying cells; this test protects retained source identity/paint, not removal of that control. A marker correction cannot excuse missing source or displaced reader text. No stronger result follows from the limited source controls or partial capture.
Earlier complete bodies follow with their original source scopes; this section corrects their current conclusions.
Current source:
22d685fc01d0c7b1d4e32ba77636207555176a2227 commits;25 files,+2734/-838. Rebased onto the matched Toad1409 main and pushed; local=remote verified. This source is not installed or accepted as a whole.
Reuse content, not an old read descriptor
The2e1 supplier contrast passed3/3, but its direct cache result retained the older page/snapshot. TranscriptPageRenderTask.prepared now owns cache acquisition plus attachment of the current actual page. The model-read, commit, historical-session and affected direct test consumers use that entry. PreparedTranscriptPage.same_source retains original tuple identity and compares Core's declaration-derived ContentExclude projection; no hand-kept field roster or fragment equality weakening. Latest-view reuse keeps the original view/range while accepting the new page metadata rather than replacing it with the old view's wrapper. Serialized siblings retain their existing storage.
Latest actual execution is a pre-rebase source epoch
prepared-metadata-08:7 selected,4 passed/3 failed in110.24s, rc1; host lease released. Inputs record immutable2e1 archive plus SHA256-addressed metadata patch, Core946 and matched pre-ABI Textual fromcb4. This is not an execution claim for rebased22d or installed34b0.Passed: live-message retained-history preservation; real read-ledger changes retain original suppliers while each result carries its actual fresh page/snapshot; the restyle counterexample; followed known-gap publication (failed in06).
Open failures:
Capture and installation epochs
Author56168 names1408 head14f05429add046cf81d9535a787e7841fbfdfc82 as the current capture target; it supersedesf9. It retains the wheel-up reader-jump failure and is not landing-qualified. Read-only source retrieval confirmed the exact head. Fresh target capture-1408-build-02 completed through existing WheelRuntime owners: Core946 plus exact Toad14f wheels, target-worker interpreter/native/package/resolution/client probes completed and the lease released. This is preparation only, with no provider input or frontend run in that phase. Resource observation:7.7GiB RAM available,0% memory stalls,8.8GiB swap used (warning); preparation is serial under the existing lease, not another agent or test farm.
I independently read installed build34b0e81189d4. Peers verified its matched Toad58c6ca55b09a/Textualda87b77f22bd. My1393/3825 source is excluded. Captured14 remains failed/unreplayed; no active-answer CPU/frame/input-to-paint distribution or complete physical preservation result exists.
Assumed: ContentExclude remains Core's declared distinction between content and annotations; source admission still owns validity. The7-control pre-rebase epoch establishes only those recorded results. Closed-prefix paint, rewrite witness/admission, the unresolved fixture operation, post-rebase validation and installed/physical acceptance remain open.
Earlier bodies below retain their dated heads and failed epochs; this section takes precedence.
Current source checkpoint
2e1bd5e3253d30019a9d783b25c5fe2adea6269326 commits;23 files,+2711/-816 against main523. Local and remote heads matched. This is a published source checkpoint, not merged, installed or application acceptance.
Prepared content retains its actual suppliers
Before: TranscriptPageRenderTask inherited both content-addressed identity and serialized storage from ReusableRenderTask. Its input identity included read/coordination annotations. TranscriptPageWork also called the raw renderer, bypassing the existing RenderPreparation owner. A separately materialized serialized result produces fresh fragment suppliers even for identical content; the required restyle/fragment distinction cannot be deleted to conceal that loss.
After: TranscriptPageRenderTask.preparation_inputs derives from Core's ContentExclude declaration. ContentAddressedRenderTask factors reusable identity independently of storage. Existing ReusableRenderTask siblings keep their serialized storage; transcript pages compose the existing ReusableStorage/CopiedValue policy with content identity, honoring PreparedTranscriptPage.deepcopy's original source/fragment ownership. TranscriptPageWork enters the existing runtime._prepare(RenderPreparation) rather than a raw-renderer bypass. No second renderer/cache, equality shortcut, compatibility alias or weaker admission is added. A real-source/read-ledger control asserts independent page results retain their original suppliers across read-mark changes.
Source evidence, not a claimed completed repair
Exact source/commands, original calls, private roots and results remain under the existing pi-ui-performance scratch/worktree owners: snapshot-content-01, snapshot-revalidation-02/03, snapshot-key-04, snapshot-suppliers-05, fencing-source-04/05 and content-*-publish logs. The retained original523 archives are not edits to a peer checkout. All prior failed epochs and protected borrows remain intact.
No1408 capture will run before its author publishes the StyledRows/LinkContext repair and controls (56040/56047). Older d34 capture14 is failed/unreplayed; native wait versus provider cause is not established. No representative CPU, fixed-scenario frame/input-to-paint distribution, configured read/edit or complete physical preservation claim exists. Assumed: source controls cover only their recorded stack and domain; pending supplier and rewrite controls, remaining1399 paint, eviction/retirement and application acceptance are still open.
Older evidence below retains its original head and scope; this current checkpoint takes precedence.
Current source checkpoint
535480c4b21ac669c7bff529dde3d0e0b8c0afc823 commits; 21 files changed, 2673 insertions(+), 812 deletions(-). The owned branch is rebased on fresh main; local and remote heads match. This is a source checkpoint, not installed acceptance.
Startup, admission and measurement compose
Before: the observation lifetime could start an installed or strictly admitted frontend, but the existing total-frame meter had no normal-startup consumer. The old capture_live --frame-meter documentation referred to a deleted injection path.
After: MeasuredStartOperation uses ApplicationLifetime.observe_next_start and the existing bounded meter; its ExitStack restores hooks when that distribution entrypoint ends. MeasuredTerminalApp inherits the existing terminal/source/resource lifetime. MeasuredCandidateTerminalApp and MeasuredStartAdmittedOperation compose that same measurement with strict candidate admission through the MRO. The read-only connection still decodes only ObserveOperation descendants, never start/measurement execution packets.
The callback counter now selects its captured UI loop rather than counting callbacks from another loop. New observations derive actual composer focus, published composer geometry and current Textual mode from their owners, enabling a real input-box and tab-return qualification instead of assuming a click succeeded. The frontend launcher derives its native entrypoint through RootLaunch.restart_entrypoint for the target runtime; the caller's absolute source-runtime launcher is not copied as target identity. Native command validation is unchanged.
Actual execution epochs
Evidence: installed-observer-f03-10, installed-meter-f03-11, runtime-observer-15-*, capture-1408-build-01 and capture-1408-d34-12 under the existing pi-ui-performance scratch owner. Historical failures and borrowed archive53 remain immutable.02/04/09/12 are not replayed.
Assumed: startup/model controls cover their stated source epochs only. Composer/tab observations and the loop filter need the actual fresh fixed scenario. Driver-handoff metrics are not terminal pixel timestamps; retain the video and source/paint qualification. Full1408 measurements, warm-M read/edit and1399's four failures remain unfinished. No stronger rooted NRA binding-closure claim survives the context-free map.
Follow-through recorded after checkpoint15
-14's native request record reaches message_start callback completion at about721ms, not a UI frame or input-to-paint measurement. The retained native session has the fresh user record but no subsequent persisted assistant record. Cancellation was waiting in Backend.receive_record / TurnWatchdog.read; its later authorized-original-turn refusal is separately owned and is not established as the cause of the missing reply. Original14 remains UNKNOWN/unreplayed.
Artifacts under /home/ts/.cache/agent-scratch/pi-ui-performance: capture-1408-d34-13, capture-1408-d34-14, capture-1408-14.{log,rc}, snapshot-content-01, snapshot-revalidation-02 and matching controller/source records. Prepared runtime/source archives and all UNKNOWN inputs remain retained. The existing fragment identity requirement is unchanged; page-only reuse remains rejected by its restyle counterexample.
All older checkpoints below retain their historical source and execution scopes.
Current source checkpoint
46798742c10cb91a370fdfbcc7cc98436129c57922 commits; 21 files, +2550/-810 against origin/main. Rebased onto current Toad main with the upstream test cleanup preserved. Local, remote and forge head match; OPEN/non-draft.
The latest commit changes4files,+80/-8.
RunObservation.turn_busyhonestly reports backend phase, not an answer. Response qualification reads only the live ResponseStream's LineMarkdown source and that body's clipped last-published native placement, then requires the nonempty marker in actual st cells in that region. User echo, ThoughtStream and completed-notice paths cannot supply that source.ScreenCapture.rows_inshares the existing region crop; no renderer or reply cache is added. The old active_response name is removed from current repository consumers, without a compatibility alias.Affected execution14 actually completed under the existing host TestLease, with repository-specific pytest processes to avoid two independent tools packages sharing one collector: Toad25/25 passed in1.01s; paired Core33/33 passed in12.85s; controller rc0. The six new reply controls include source/busy/paint separation and empty-marker refusal. The real typed UpgradeRefused assertion preserves strict build rejection. Exact paths/logs/input hashes:
/home/ts/.cache/agent-scratch/pi-ui-performance/runtime-observer-14-*.This does not establish a fresh frontend observation, completed provider reply, held-scroll capture, configured warm-M acceptance, CPU or latency result. Capture02/04/09 remains unreplayed; archive53 and borrowed runtime evidence remain retained. Installed f03ec9775 is a separate epoch, not this unpublished-to-install source checkpoint. Assumed: the declared fixture/control domain is the test scope; source and terminal-region matching still require the authorized real capture.
All older heads/counts below are retained historical epochs, not current-head evidence.
Prior checkpoint
3c946d4104431fc9fae50d3803fe105278e79f7b21 commits; 21 files changed, 2478 insertions(+), 810 deletions(-). Rebased on current Toad main
ec4ef382f.The latest commit changes two documentation files only: caller-owned host lease and actual installed capture08/09 results. No new product repair, test run or performance result is claimed.
fc3ca84a66414cf595de16f8da929a65) and native provider stream start at742ms from request preparation. No new assistant text was retained before the75s qualification deadline. No gestures/profiler ran; no connection-failure or model-delay cause is established. The owner log also records a cancellation/turn-lease refusal, not a proven cause of the missing response.observer-head-53e04c515remains immutable/read-only for UI. It is an older borrowed source checkpoint, not this rebased head.Exact capture sources and retained artifacts are documented in
docs/performance/scroll-series.md. Prior checkpoint evidence follows with its original epochs and limits; the current qualification and withdrawal above take precedence.Current checkpoint — installed observation separated from candidate proof
20 commits, 21 files, +2434/-810 against current main; head53e04c515.
Latest bounded correction: 10 files, +355/-108. Git local=remote verified.
Core3825 remains independently published atdc44cd1177f5; this observation path
is not held for its integration. Four1399 product failures remain open.
Before / after owners
Before:
physical_ui.TerminalApp → RunTarget/AdmitOperationrequired the unmergedresolution/interpreter API even to observe installed bytes. Program source was
read at import, and moving strict operations without their namespace would leave
tests and frozen programs describing different Python families.
After:
physical_ui.ObservedTerminalApp → RunResources / ObservedResultowns the oneexisting st/display/input/startup-pipe/resource/retirement lifetime.
InstalledOperation → InstalledResultrecords actual executable/package originsthrough the installed runtime's existing wire probe, with no metadata-parser
copy or fallback import. This is origin evidence, not candidate byte proof.
physical_ui_candidate.TerminalApp(ObservedTerminalApp)andphysical_ui_admission.RunTarget(RunResources)add strict build admission.Recorded-interpreter and full entry/final build verification remain strict.
tools.physical_ui*consistently.Snapshot source is read once when execution starts, never by ordinary imports.
Agent.readyandcurrent_turn.busy. Saved publication, agent readiness and active response aredistinct observations; none is inferred from another.
Deleted: the installed observer's concrete new-probe import and implicit strict
candidate requirement, import-time source reading, stale owner imports and the
old unqualified mixed module paths. No aliases, second process owner, renderer,
queue, runtime overlay or installed-package edit. The mutable frame metadata
caller now uses
TranscriptReadIdentity.page_bound; frozen inputs stay unchanged,and no injection path is thereby authorized.
Executed scope, not physical acceptance
observer-installed-06.log/.rc:3 staged request round-trips in fresh installedinterpreters, rc0; the new candidate probe remains unloaded.
observer-candidate-06.log/.rc:3 staged request round-trips on the existingimmutable0402/3475 interpreter, rc0. No build probe or App executed.
installed-observation-origins.log/.rc:83 actual installed package origins onc8, no new-probe import. This is the old protocol exercised, not a UI result.
observer-result-07.log/.rc:installedCore038c result codec/current-origincontinuity and changed-executable refusal, rc0. The UI record is explicitly
synthetic; it grants no mounted-readiness claim.
declarations and8184 canonical projections,0 parse omissions. Eight raw rows
are not canonical projections; dynamic/alias/descriptor/effect/foreign-platform
and movement limits remain OPEN. Full source hashes are retained.
the necessary model/real-app selections, integration, merge and supported install.
Receipts live under
/home/ts/.cache/agent-scratch/pi-ui-performance/.An immutable-by-retention-policy source archive of this exact head is at
/home/ts/wt/pi-ui-performance--f885a2f85e6343be886cd3ee761f9de2--agent-comms/platform-source/observer-head-53e04c515/.Its tool hashes are in
observer-archive-07.log. It is source, not an installedpackage overlay. Do not edit it while a consumer retains it.
Still open
No new mounted-ready or qualifying active-response scroll capture exists yet.
Capture04 and05 remain failed scope (no active prompt/response in04; gestures
while Connecting and sampler timeout in05). No median/p95 frame/input-to-paint
number is claimed. Original02 UNKNOWN and04 attempted input remain unreplayed.
Warm M read+edit, hidden/reopen/tab-return, full source/lifetime/physical journey
and original-coordinate acceptance remain open. Model/import/source/metadata
checks do not promote themselves into a screenshot.
Necessary remaining risks: execute the existing physical-run model controls for
resource/candidate separation and strict finalization; exercise actual installed
startup/loaded-history/agent-ready/focus before new input and held-scroll. Existing
tests/model/test_physical_run.pycontains the model controls. No reassurancererun or product-method patch is requested.
Assumed: Linux host for native executable observation; retained runtime/package
inputs remain immutable; package-origin equality is metadata continuity, not
continuous loaded-byte hashing. Strict candidate proofs keep their separate owner.
Retained historical checkpoints — their original scopes, not current acceptance
Summary
19 commits, 18 files, +2184/-807. Current source
52750fe4adb6a2613ff95ac547c2fe7f5d6135b2on P859 main612df0db0; paired Core#3825 remains040208ebdc65bf08a56bfa24446537f33f7ba590onb706aaa14. Latest checkpoints fix the stopped-history probe and retirement fixture, carry1399's acquisition/publication correction, and move bounded pending-source acquisition to the observation owner. No new renderer/controller.Paint-only #1399 is published for independent delivery,bf87092f4e81,2commits/5files,+273/-36: four production owners plus presentation-fencing tests. The initial65650 carve exactly preserved the five3475/615 paint blobs after the offered handoff remained unconfirmed. The new review correction is now also retained here through fe36; no original implementation was lost. I retain implementation and configured read/edit verification context; the harness must not delay that usage fix. Its authorized app selection actually collected5, passed5,71.91s,rc0, at26a application/fixture + installedceeed Core/Textual—not4/5. This does not establish configured read/edit or physical/performance acceptance.
Dated0ce/615 exact wheels, fresh preparation and own-installed readback passed; physical02 failed rc1. Actual entrypoint/pipe/admission/ordinary observations/initial screenshot executed, but the screenshot shows waiting/not-loaded. Multiprocessing re-imported operation.py as mp_main and executed startup again: bad-FD and repeated exclusive-error writes. An SSL allocation errno12 also occurred under my inherited1.5GiB virtual-address wrapper limit; host exhaustion is not established. The current explicit main fix passes actual stdlib-spawn import/normal import/explicit-refusal controls; no new GUI execution is implied. No readiness retry or guard weakening. Original8f+63af runtime/carry evidence remains at its original inputs.
Current candidate
/home/ts/.cache/agent-scratch/pi-ui-performance/p859-runtime-040347-02now passes supported preparation and own-installed-Irecord/archive/interpreter/tool readback, both rc0, no Core/Toad source overlay. Core0402 fixes my stale StorageProjection import exposed by the failed58905 preparation01 (prefix absent); lazy command/10-feature-import controls and9module/116class named-consumer map pass. Corrected Core wheel9f6c8259…was rebuilt; unchanged3475 Toad833aa19c…reused. Textual9a0501c and stock3.14.8, exact ceeed donor. UI1391 has read-only borrow approval. This is not latest-all-stack/production/carry/GUI/read-edit acceptance. Full receipt details are in paired3825 and scratchp859-runtime-040347-02-{prepare,readback}.log/.rcplus readback.json.Latest actual active-scroll02: startup qualified, native input UNKNOWN
The fresh02 run passed the corrected source-publication boundary, visibly loaded saved history and bound the intended private ACP. Physical text entry and Return were attempted; input
18496848703c40afab7deab2a7c8993eremains UNKNOWN and is NOT replayed. The editor was in normal mode, so the initial R selected Replace mode and the actual ACP prompt beganead. No successful configured read/edit or provider response is claimed.Native inspection/prompt preparation then failed at
ThreadCatalog.publish → NativeRequestTools.catalog → FieldCodec:_OpaqueDecoder declares no JSON schema. A separate read-only declaration/schema check executed65 native tool schemas and found exactly one failing declaration:CommsOrderDoneTool.delivery/OrderCompletion. Commander54025 assigned the complete schema owner/current-main comparison to claude-ai; this PR does not delete a tool or add an opaque fallback.NativePiUnavailable: Configured command is not a validated native Pi launcherremains a distinct diagnosis. Profiling never started, so this is NOT a negative notification result.01 and02 remain immutable, with their exact native host/frontend/st/recording/Xvfb births independently absent; private-root retirement passed.This checkpoint renames the misleading raw typing method to
TerminalApp.type_promptand uses the real prompt's normal-mode i action before literal input. The one live repository caller in acceptance.py is migrated; no compatibility alias. Native editing remains owned byPrompt.enter_insert → NeovimEditing.enter_text. NRA's existing27-module query has466 raw/canonical classes,0 local omissions,14,333→14,334 syntax sites; dynamic/effect limits remain OPEN. Two compiles and actual tools imports passed; no pytest. Fresheditor-input-040347-01visibly inserted the completeRead EDITOR_INPUT_...token in INSERT mode, native undo restored the empty prompt/placeholder in NORMAL mode, and redo restored the token. All three physical screenshots were read. No Return/native owner/provider was used. The OVERALL RUN EXITED1 on final AdmitOperation: FileNotFoundError forfrontend-home/toad. Existing private-root retirement passed; I retain diagnosis of that final-admission failure. These are working editor controls, not a passed full run, active-agent profile or arrival qualification.Earlier actual active-scroll01 startup failure and owned correction
active-scroll-040347-01used a NEW outgoing-created two-thread CheckRoot and the immutable0402/3475 prefix. Two logical native owners started on one shared native-host birth. No ControlledProvider/configure_provider was called. Native discovery pointed to the existing configured directory; that observation alone is NOT provider/authentication proof.The controller exited1 BEFORE physical input/sampling. Its retained
fresh-input.jsonisNOT_SUBMITTED. Initial runtime/source admission succeeded, then ACP entered its real pending-coordination transition andTerminalApp._observepropagatedPendingRun: A bound ACP has not published its coordination rootduring terminal capture. Existing root retirement completed. This is neither a negative notification profile nor configured read/edit acceptance.Before: only the initial AdmitOperation loop waited for pending source publication; later observations treated the same startup state as a fatal result. After:
_observeowns one deadline for fresh read-only observation packets while PendingRun holds, and the admission-only loop is deleted. Exact process/display/resource checks remain. Foreign-root and other errors are NOT caught; xdotool input is outside the retry, so no failed/UNKNOWN input is replayed.NRA's existing source/family query:27 modules/466 raw and canonical classes/0 local parse omissions;14,332 to14,333 syntax sites. Existing dynamic/alias/effect limitations remain OPEN. One compile and actual0402/3475-dependent tools import returned0. No pytest run. The NEW
active-scroll-040347-02attempt qualified this startup boundary and then failed at the distinct native catalog path described above. No notification/product change was made. The read-only sudo py-spy help/version preflight passed, but help output is not a performance capture.1. Append/publication: preserve the painted prefix
Before:
FollowTailCommit.extend → PreparedPageCommit.capture → PreparedReplacementViewportRequest → _publish_latestreplaced preceding pages even for a bounded saved-source append.ClosedHistoryonly a partial replacement, losing its prefix.Conversation.check_prunecounted saved history as native/live pressure.After:
PreparedAppendCommit(PreparedPageCommit)inherits capture/draw/source-cut evidence and owns cursor-after acquisition. CommitPlan captures the read's publication member; TranscriptChanged fixes it to existing PreparedPageCommit for both full acquisition and later publication. The default remains complete acquisition.commit_preparationchooses its acquisition contract: saved history appends; closed history acquires a full replacement. No consumer type roster or read-mode flag.TranscriptSourcePreparation.publish_appendshares the existing bounded extension algorithm but requires current publication, no remaining known gap, and the requested actual published endpoint before destructive retirement. Access-only consumers retain their weaker contract.Strict fragment
same_source, inherited outgoing/native/source-cut capture, current/ready checks, locking, commit and retirement fences remain. Initial8739's two broken contracts were corrected in78e8, source-reviewed separately; no claim that its first local result was correct.2. Actual app controls, including the admitted-read gap
The original five executed cases in
tests/textual/test_transcript_presentation_fencing.pycover:4–5. Actual laid-out live pressure below/above its declared threshold, excluding saved height.
History is not rewritten to make these pass:
Thread.projectsetup; no app assertions reached. Four callers now use the existingThread.project_pathdeclaration.publish_appliedreturning true can mean a guarded no-op; that source fact alone did not establish the prior failure's cause.HeldSourceCase: wait for actual read entry, form the known gap while held, release/join infinally, then assert immediate destination publication.The existing
pytest_session/TestLease, actual ceeed interpreter/Core/Textual, this checkout's Toad src/tools/tests and borrowed read-only pytest dependencies were used. Background INT300, no xdist/full suite/local gate. Origins and full output were personally read; inspected ac-private process query was empty after completion. Evidence under/home/ts/.cache/agent-scratch/pi-ui-performance/dm-app-controls-03/{origins.log,pytest.log,pytest.rc}. The two failed earlier runs remain alongside it. The lease was returned to the commander for combined main integration.3. Startup observation replaces debugger attachment
Before:
After:
No running-process injection, ptracer grant, signal handler, periodic wakeup, new controller or fallback. Only the selected new frontend inherits the reader; the descriptor is non-inheritable before later execs. Ordinary observations carry paths to bounded fresh typed data packets, not executable program copies. The declaration module stays alive while the entrypoint runs, avoiding a replaced
__main__codec namespace. Start/stop records are rejected by the observation family's existing decoder, not a manual operation roster.The existing
TerminalAppowns writer, st/frontend process lifetimes, current resource/source admission and cleanup. Exception/uncertainty retires the owned child without further observation/input.AcpRoots(MroProjection)is now declared once instead of reconstructed/registered on every observation; boundary answers remain unbound(), pending refusal, actual Agent coordination or foreign-type refusal.capture_live.pynow exposes read-only py-spy only. Injection, heap and arbitrary trace options are deleted, not hidden behind a permission flag. Frozenframe_meter.py,capture_history.py,history_capture_remote.pybytes remain unchanged and unrun; their historical injection route is forbidden by the current host permission. Their documentation is marked historical, not launch authority.Adjacent old caller defect repaired: plain acceptance supplied no PATH although the existing CLI requires one. It now supplies the private home; ACP uses its own declared argument vector. The actual expandable Ready footer remains unchanged.
Execution limit: startup03 on installed0402/3475 executed the transport/admission and visibly loaded stopped saved history, then exited1 at the incorrect Ready-label probe described below. The new source-readiness probe remains unrun. Calling the distribution entrypoint does not qualify the separate
toad-commsshell launcher; no shell-launcher proof.4. Source evidence, not an execution passport
Before startup edits, the bounded NRA parser/syntax/family map covered14 modules,193 raw classes,192 canonical,1 OPEN,8337 sites,0 parse omissions. The broadened after map includes the real codec, family, dispatch and ACP dependencies:20 modules,406 raw/406 canonical,11751 sites,0 omissions. Two final diagnostic-message changes received targeted syntax reproof; unchanged records were retained. All maps keep hashes and original epochs. Later main-rebase dependency differences are explicitly listed in the pair qualification instead of silently treating old hashes as current.
Five changed Python files compile; actual owned imports, Observe/Admit codec roundtrips, Start/Stop refusal, StartedResult roundtrip, shared AcpRoots MRO and actual unbound/pending answers passed, rc0, before rebase. The first source controller caught the wrong unwrapped exception and failed; FieldCodec correctly returned MalformedRecord. Its failed log remains separate from the corrected result.
Evidence: owned Core
platform-source/physical-startup-{before,after,final-source-map}.json,physical-startup-source-proof.json; scratchphysical-startup-qualify-02.log/.rc,physical-startup-final-reproof.log/.rc. Rebase/import/native-input qualification passed rc0 at the stated0ce/615 heads:7 Core/14 Toad patches equal,12 Core/16 Toad retained feature blobs unchanged, main's DealPrompt fixture change retained, shell-script deletion preserved, owned imports/shared completion checked and native treefb47af0285bbe987pinned. Result:platform-source/current-main-pair-source-proof.json, scratchcurrent-main-pair-qualify-04.log/.rc. Three earlier checker failures remain failed (whole-file assumption, mutable ref, deleted-file handling). The two changed mapped dependencies are Agent's GoalId annotation and AgentConnection's inherited goal defaults; their exact source diffs were read and no ACP-root declaration changed. Source map enumeration is not whole-package/dynamic/native/behavioral completeness or an authenticated method/default/alias movement certificate. Zero automatic moves admitted. The newly added observation-boundary pytest case and earlier17 model scenarios remain UNRUN.5. Exact current-pair artifact and preparation
New genuine wheels at the dated0ce/615 source heads were built through existing cached Hatchling1.28, rc0, and made0400:
6701df2384ad6fe0c4953898b0e2924f0a53e5cc5d0fc1a1f7904d51b00fb52e.450bc2278c0260db8875a385cf3dce8a042d821b6ab963b5c5873a341e0d7bad.Actual source members/duplicate and missing/extra Python checks passed; protected source/frozen inputs unchanged. Build receipt:
pi-ui-performance/startup-pair-wheels-01/build-result.json, sibling log/rc, under owned scratch. No new environment/dependency install or production-root operation occurred during build.The source-selected existing
prepare-runtimeCLI used actual ceeed Python, stock3.14.8 and the recorded ceeed dependency donor into NEWpi-ui-performance/startup-runtime-0ce615-01. Offline venv/install/check and native/package/runtime-resolution/client-import phases returned0. RuntimeStack reused the existing native cache; the historical custom debugger interpreter was not selected. A separate-Iexecution from the new prefix matched RuntimeResolutionProbe against its record, including exact retained archive bytes and stock native image, and imported actual installed Core/Toad/Textual plus the current tools snapshot with no Core/Toad source overlay, rc0. This is artifact/preparation/readback, not physical or production installation. The source-selected preparation parent is not an installed-CLI qualification claim.Outgoing installed ceeed CheckRoot captured at most200 bus messages plus per-thread native history capped at200 records/1MiB into NEW
startup-physical-0ce615-02/bus; its RootRuntime.publish then bound only that stopped copy to the new prefix, rc0. Original runtime-marker SHA before/after matched. The first standalone copy controller failed at unselected LaunchRoot before root creation; corrected02 uses the existing explicit selection context, no old-root reuse or model input. Original input/goal/native authority does not travel. Physical02 then failed rc1 as described above. Initial.png, complete ready-changes, startup/error.json and original traces are retained; its failed root is not reused. Existing owner/host cleanup completed, Xvfb177859/recording177861/st177862 have retired receipts and frontend177864 also checks absent. Literal PID checks show all four absent; no cleanup is inferred from a refused command.Explicit entrypoint correction
The module footer used adjacent JSON existence to decide execution, so multiprocessing's actual
_fixup_main_from_pathre-import executed the startup request in a child with no inherited descriptor. The explicit Python main boundary now owns both startup and shutdown; ordinary and mp_main imports only declare classes. No manual roster or input-permission cache.Four fresh isolated controls ran rc0: old real stdlib spawn-import writes its synthetic MalformedRecord error (demonstrated bad side effect); new real spawn-import and normal import write none; explicit execution still refuses the synthetic unadmitted operation. These are actual import/execution controls with no root/session/model packet, not replay of02. NRA retained20modules,408original/408canonical classes,0unprojected/0parse omissions (dynamic binding remains unproved);11758→11756sites, all class declarations/bases unchanged. Current-source compilation/import/native pin passed at ac062/8c8+guard; later Core-main cleanup is a separate source epoch. Receipts: platform-source/physical-entry-{before,after}.json and scratch physical-entry-controls-01/result.json, physical-entry-qualify-01.log/.rc. This is bounded syntax/family/import evidence, not a whole-program dynamic/MRO/effect certificate or installed new-pair proof.
6. Runtime/provenance and preserved isolation
RunTarget retains intended resources and recorded interpreter evidence. AdmittedResult belongs to one exact FrontendIdentity; ordinary RunObservation cannot substitute for build admission. Every physical input still checks current process/module locations, HOME/XDG/database/palette, actual storage rule, opened source, saved entries and bound ACP roots. Full archive/native hashing occurs at admission and successful retirement, not every key. These disk observations do not prove arbitrary intermediate mutation impossible or complete loaded-code equivalence.
Archive inputs grant neither Git ancestry nor production-lock reuse. Core#3825 separates recorded completion's exact-input reobservation from preparation/build's production-lock eligibility. Existing RuntimeStack/WheelRuntime/TargetStack behavior owns UV, completion, native preparation and worker retirement; no second installer.
Original8f runtime02 passed supported fresh preparation, own-installed completion, production-lock/repository refusals, modeled missing/changed interpreter-proof controls, second-generation preparation/completion and a real changed-member refusal by a NEW worker. Core wheel SHA
44270fd8fe394925925676cce891b49559251f2b2ab085bae3841e9ad5b4bd3e; Toad input was63af, not this PR.278 protected inputs unchanged. Its deliberately modifiedprepared/remains negative; distinctfor-carry/is positive.Original carry02 passed own-installed TargetStack.complete → ordinary stopped CheckRoot history → PracticeCopy/PracticeBus/PreparedMigration → one actual bus.sqlite3 reconcile/readback.22 declared steps were already current/0 pending and post-dry checks changed0, not22 historical conversions. Original source-copy files/three prefix inputs unchanged; workers/lease retired. It is not full InstallRun publication/rollback/harness, P867 original-coordinate retention, or frontend/native/provider acceptance. Earlier runtime01/carry01 controller failures remain failed; no replay/retrofit/relabel.
7. Historical physical and pager evidence — narrower epochs
Earlier7d0d-controller runs12/13 completed bounded stopped-history PageUp/PageDown/reversal/End/wheel and48×48→140×40 geometry in owned1600×1200 Xvfb, with actual package origins, private source/HOME/XDG/palette and exact child-retirement records. They had zero bound ACPs and do not qualify this startup replacement or incoming native tools. Run14 callback timeout remains inconclusive.
The historical CPython debugger-loader proposal and18 native controls/private functional stopped-history journey retain their own native/source evidence in the existing documentation. They are not permission to resume forbidden attachment experiments. No cap increase, global ptrace change or original-session replay follows.
Pager retirement's independent join copied the failed worker's active identity, causing Textual's genuine self-wait rejection. The existing preparation parent now creates its independent AwaitComplete in an empty native Context; all six descendants inherit it. Revocation, subscriptions, cancellation, joins and errors remain owned. That cleanup landed separately as#1394. Its exact59d app controls passed2/2 in31.58s with the earliera5b Core lifecycle source—not current installed/physical acceptance.
8. Physical03: saved paint works; the old probe was wrong
Fresh outgoing-owned CheckRoot copy
physical-040347-03ran the real installed0402/3475 entrypoint in plain st/OwnedDisplay with the existing TestLease. Original marker hash stayed unchanged. Inherited address-space limits were(-1,-1), not the old1.5GiB build wrapper. Startup/read-only pipe, build/resource admission and actual observations worked.frontend/ready-failed.pngplus its st capture show real source rows and the expandable footer Stopped · … Saved history available; initial.png is the earlier waiting frame. The recording retains that transition. This is actual installed saved-history paint, not configured-native or full-journey acceptance.The run exited1 because TerminalApp.show_thread demanded
▶ Readyfrom a copy CheckRoot deliberately stops. New RunObservation.history_published derives from the registered pagers' original state.reports_coverage; agent status is not consulted. All published-window geometry remains, including unready windows for blank-frame analysis. ScreenCapture retains the original RunObservation rather than copying its geometry. No product footer was changed, no stopped view was declared running and no failed03 root is reused. The replacement probe still needs a NEW run.StopRootOperation returned Stopped. Exact-birth checks show frontend630570, st630568, recording630567 and Xvfb630565 absent, and private root host dead;
retirement/process-absence.json,physical03-retirement.log/.rc0. Full result: owned Coreplatform-source/physical03-result.md. No UNKNOWN/provider/model input was replayed.Source-readiness/retirement map:27whole modules,466original/466canonical classes,0local parse omissions,14341→14332sites; class/bases unchanged. Dynamic bindings/effects remain OPEN. Four files compile; actual tools import and two SYNTHETIC false/true publication codec states passed rc0, preserving the original observation and geometry. This is not physical acceptance of the new probe. Artifacts:
platform-source/physical-ready-{before,after}.json, scratchphysical-ready-qualify.log/.rc.Errors53907's adjacent retirement fixture patch is deleted here: no patch.object, wrapper, entered-event or copied covered dictionary. The test holds the real output lock, waits for synchronous withdrawal of both original resources, verifies both remain attached while source/tree locks can be acquired, cancels the real worker and checks eventual teardown. Its coordination setup remains Errors1389's separate hunk. This changed app case remains UNRUN.
The1399 read-failure correction carried here shares PreparedCommit.capture and deletes both viewport-specific extend methods. Three NEW app counterexamples remain UNRUN: held closed-prefix[False] and same-path growing-file replacement[False/True]. The old five passes remain26a/ceeed only. No per-head reassurance run.
Still open — same owner
Assumed: candidate inputs remain immutable; the paired Core supplies the declared storage/interpreter APIs; ordinary CheckRoot imports stopped history and does not preserve original native/input authority; UI1391, Errors1389/3842, Shell1398 and Carry3829 retain their own changes. No new fleet, installed-package hand edit or physical acceptance from another head.