Skip to content

FE-1352: Admit Pi 0.84.x upgrade frontier to PLAN - #428

Draft
lunelson wants to merge 51 commits into
ln/fe-1348-audit-all-usage-and-testing-pathsfrom
ln/fe-1352-pi-084-upgrade
Draft

FE-1352: Admit Pi 0.84.x upgrade frontier to PLAN#428
lunelson wants to merge 51 commits into
ln/fe-1348-audit-all-usage-and-testing-pathsfrom
ln/fe-1352-pi-084-upgrade

Conversation

@lunelson

Copy link
Copy Markdown
Contributor

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 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

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

@lunelson
lunelson changed the base branch from ln/fe-1348-audit-all-usage-and-testing-paths to graphite-base/428 August 13, 2026 15:58
lunelson and others added 21 commits August 14, 2026 12:45
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
lunelson force-pushed the ln/fe-1352-pi-084-upgrade branch from 69c95b7 to 8434739 Compare August 14, 2026 14:17
@lunelson
lunelson changed the base branch from graphite-base/428 to ln/fe-1348-audit-all-usage-and-testing-paths August 14, 2026 14:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant