FE-1352: Admit Pi 0.84.x upgrade frontier to PLAN - #428
Draft
lunelson wants to merge 51 commits into
Draft
Conversation
This was referenced Aug 13, 2026
Contributor
Author
|
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
This stack of pull requests is managed by Graphite. Learn more about stacking. |
lunelson
changed the base branch from
ln/fe-1348-audit-all-usage-and-testing-paths
to
graphite-base/428
August 13, 2026 15:58
next is pinned to Pi 0.83.0 and still carries the brace-expansion and undici advisory families that main's PR #422 clears only for that trunk. The bump is not version-only: 0.84.0 removes the cumulative message field from JSON/RPC message_update while the in-process extension event keeps it, so brunch's exposure sits at the in-process/wire boundary — where live-session-events.ts and subagents/session.ts both read the field through structural casts that fail silently at runtime rather than at the type checker. Admitted as an evidence-gated coverage frontier under proving posture, sequenced first in Next ahead of cli-mode-entry: both later frontiers are Pi-surface work, and FE-1348's frozen inventory is the cheapest regression oracle available for a harness bump. Retires A25-L, which has never been tested across a five-minor jump spanning a harness rewrite. Verified as no-impact by grep: the agent-core v4 Session/SessionRepo rewrite, the required FileSystem.renameFile, the ModelsStreamTransforms rename, the setRuntimeApiKey signature change, and RemoteSession.sessions. Also threads a cross-cutting obligation into shared-session-host-convergence: 0.84.0 ships PiClient/RemoteSession, so the cutover must consume this frontier's verdict before deleting SessionEventRelay and /rpc/driver. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Enumerates the ledger from brunch's import graph — ~110 distinct symbols across 210 files — rather than from changelog entries, in seven sub-seams: runtime/auth, event projection, pi-tui components, extension surface, test substrate, verified-no-impact, and new-API disposition. Scoping justified that basis. A .d.ts diff of 0.83.0 against 0.84.1 found a hard breaking change absent from the published Breaking Changes list: pi-tui's TUI moved from `export declare class TUI extends Container` to `export interface TUI extends Component`, with TuiMainScreen and TuiAltScreen as the concrete classes. brunch has 30 `new TUI(` sites across 13 files, two of them production, and 14 value-imports that break at import rather than at type. The changelog is necessary but not sufficient as an inventory. Also verified at scope time: the faux ProviderConfig is a static models array plus an optional streamSimple override, with no refreshModels and no context.store, so the provider-refresh break does not reach brunch's test substrate. The event-projection rows are marked to close on witnesses rather than on a green type-check, because their only current guard is a structural cast that returns null silently. Row B4 hardens those seams so the next bump fails loud. PLAN records the reconciliation: objective, boundary intent, dependencies, and posture are unchanged, so this widens the enumeration basis without re-planning the frontier. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Restacking onto the advanced FE-1348 left this frontier asserting a gate that had already moved. Three references still named "FE-1348's five open required rows" and listed A51-L among them; A51-L, TUI-companion usefulness, standalone-web driven session, and stdio public RPC have since closed. The gate is now two rows — Execute evidence and cross-surface settlement — and the cross-surface row carries an additional dependency the earlier text could not have known about: shared-session-host-cutover must first repair the React settled-review/continuation projection that FE-1348's consumed final witness stopped on. Textual conflict resolution alone would have left all three claims wrong, so this is recorded as its own commit rather than folded into the rebase. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
SW3 landed and passed its pre-approval gate, which invalidated this frontier's claim that cross-surface settlement was waiting on shared-session-host-cutover's React repair. That is the third time in two days that a duplicated snapshot of FE-1348's row state has gone stale under a restack — 18-of-23, then five open rows, now the React-repair blocker. Copying a fast-moving frontier's status into a dependent frontier is the defect. Replace all three copies — the Branch line, the dependency-graph gate, and the ledger's Orientation — with a pointer to FE-1348's Active entry, which owns that status. FE-1352's own dependency is unchanged and stated once: it waits on every still-open required row in FE-1348's sweep, whatever that set currently is. Not touched: two bullets on FE-1348 itself still read CS1/SW2 where its Active and arc entries now read CS1/SW2/SW3. Those are that branch's to reconcile. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
lunelson
force-pushed
the
ln/fe-1352-pi-084-upgrade
branch
from
August 14, 2026 14:17
69c95b7 to
8434739
Compare
lunelson
changed the base branch from
graphite-base/428
to
ln/fe-1348-audit-all-usage-and-testing-paths
August 14, 2026 14:17
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.

FE-1352: Admit Pi 0.84.x upgrade frontier to PLAN
next is pinned to Pi 0.83.0 and still carries the brace-expansion and undici
advisory families that main's PR #422 clears only for that trunk. The bump is
not version-only: 0.84.0 removes the cumulative message field from JSON/RPC
message_update while the in-process extension event keeps it, so brunch's
exposure sits at the in-process/wire boundary — where live-session-events.ts
and subagents/session.ts both read the field through structural casts that
fail silently at runtime rather than at the type checker.
Admitted as an evidence-gated coverage frontier under proving posture,
sequenced first in Next ahead of cli-mode-entry: both later frontiers are
Pi-surface work, and FE-1348's frozen inventory is the cheapest regression
oracle available for a harness bump. Retires A25-L, which has never been
tested across a five-minor jump spanning a harness rewrite.
Verified as no-impact by grep: the agent-core v4 Session/SessionRepo rewrite,
the required FileSystem.renameFile, the ModelsStreamTransforms rename, the
setRuntimeApiKey signature change, and RemoteSession.sessions.
Also threads a cross-cutting obligation into shared-session-host-convergence:
0.84.0 ships PiClient/RemoteSession, so the cutover must consume this
frontier's verdict before deleting SessionEventRelay and /rpc/driver.
Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
FE-1352: Scope the Pi 0.84.x change-surface sweep
Enumerates the ledger from brunch's import graph — ~110 distinct symbols
across 210 files — rather than from changelog entries, in seven sub-seams:
runtime/auth, event projection, pi-tui components, extension surface, test
substrate, verified-no-impact, and new-API disposition.
Scoping justified that basis. A .d.ts diff of 0.83.0 against 0.84.1 found a
hard breaking change absent from the published Breaking Changes list: pi-tui's
TUI moved from
export declare class TUI extends Containertoexport interface TUI extends Component, with TuiMainScreen and TuiAltScreenas the concrete classes. brunch has 30
new TUI(sites across 13 files, twoof them production, and 14 value-imports that break at import rather than at
type. The changelog is necessary but not sufficient as an inventory.
Also verified at scope time: the faux ProviderConfig is a static models array
plus an optional streamSimple override, with no refreshModels and no
context.store, so the provider-refresh break does not reach brunch's test
substrate.
The event-projection rows are marked to close on witnesses rather than on a
green type-check, because their only current guard is a structural cast that
returns null silently. Row B4 hardens those seams so the next bump fails loud.
PLAN records the reconciliation: objective, boundary intent, dependencies, and
posture are unchanged, so this widens the enumeration basis without re-planning
the frontier.
Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
FE-1352: Reconcile the FE-1348 gate after restack
Restacking onto the advanced FE-1348 left this frontier asserting a gate that
had already moved. Three references still named "FE-1348's five open required
rows" and listed A51-L among them; A51-L, TUI-companion usefulness,
standalone-web driven session, and stdio public RPC have since closed.
The gate is now two rows — Execute evidence and cross-surface settlement — and
the cross-surface row carries an additional dependency the earlier text could
not have known about: shared-session-host-cutover must first repair the React
settled-review/continuation projection that FE-1348's consumed final witness
stopped on.
Textual conflict resolution alone would have left all three claims wrong, so
this is recorded as its own commit rather than folded into the rebase.
Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
FE-1352: Point at FE-1348's status instead of copying it
SW3 landed and passed its pre-approval gate, which invalidated this frontier's
claim that cross-surface settlement was waiting on shared-session-host-cutover's
React repair. That is the third time in two days that a duplicated snapshot of
FE-1348's row state has gone stale under a restack — 18-of-23, then five open
rows, now the React-repair blocker.
Copying a fast-moving frontier's status into a dependent frontier is the defect.
Replace all three copies — the Branch line, the dependency-graph gate, and the
ledger's Orientation — with a pointer to FE-1348's Active entry, which owns that
status. FE-1352's own dependency is unchanged and stated once: it waits on every
still-open required row in FE-1348's sweep, whatever that set currently is.
Not touched: two bullets on FE-1348 itself still read CS1/SW2 where its Active
and arc entries now read CS1/SW2/SW3. Those are that branch's to reconcile.
Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com