Skip to content

Upgrade to Lash 46dfed8ea; remove plan mode - #17

Merged
SamGalanakis merged 7 commits into
mainfrom
upgrade/lash-46dfed8
Sep 8, 2026
Merged

SamGalanakis merged 7 commits into
mainfrom
upgrade/lash-46dfed8

Conversation

@SamGalanakis

Copy link
Copy Markdown
Owner

Re-pins Lash from 9debf5aab to main 46dfed8ea (203 upstream commits) and adopts the range; removes plan mode entirely.

Adoption

  • Session admin facets replace the removed session sugar; ObservedProcess incarnation + last-event sequence carried end to end (incarnation-keyed dock identity, so reused process ids cannot inherit an older lifetime's state); typed CellFailure rendering; TurnReport.failure_evidence / omitted / mandatory TurnIssueSeverity (advisory issues no longer read as failures); non-exhaustive error fallbacks.
  • Version stamps: session schema 50, trace 18, remote protocol 54. The 45→50 bump is a forward-only whole-home cutover; preflight refusal + --reset docs updated, with an old-stamp refusal/reset e2e fixture.
  • Dock snapshots move off unbounded list_all() onto list_observed_by with ProcessStatusFilter::Any + retired_since_ms derived from the 10s retention window (mitigates Dock snapshot polling scales O(N) with every process the session ever observed #15; residual registry-side scan tracked upstream as FIG-2488). Same observer lens, retention semantics unchanged.
  • New charge_safety config key (upstream SessionPolicy::charge_safety shape; unset = RequireGuarantee). Live policy, reapplied on every open/reopen path, e2e-covered including reversion on key removal.
  • Resume identity fix: durable turn ids came from per-launch stream counters (cli-turn:1), colliding in effect replay on resume. Turns now use Lash-generated identities; a follow-up commit removes the last dispatch-time fabricated seed and adds a mutation-proven regression for the dispatch window (both independent reviews converged on this defect).

Plan mode removed

/plan, the plan plugin, plan dock, projector, TUI extension, and all tests/docs references deleted; generic plugin-surface and extension seams retained.

Verification

  • fmt, clippy --workspace --all-targets (-D warnings), 347+ workspace tests, 15 CLI e2e, docs checker — all green at head.
  • Operator battery: 3 PASS (turn-flow, cancel-semantics, resume-picker), 2 Abort for unavailable coverage only (quickstart page deliberately frozen upstream at this pin; process-dock real-provider-only rungs) — 0 product defects. Deterministic dock coverage passes with incarnation-joined SQLite lifecycle/observer evidence.

Review outcome

Two independent reviews (one fresh-context, one high-effort peer) converged on a single blocking defect — the stale dispatch-time cli-turn seed — fixed in 24c3eab with a regression. All other hard topics (dock lens equivalence, charge-safety defaults/consistency, plan-removal completeness) verified clean. Nits: none blocking.

Samuel Galanakis added 7 commits September 8, 2026 11:08
Carry process incarnation and event freshness through dock state and selection. Preserve explicit queued-work ownership, handle fallible RLM configuration, retain attachment capability snapshots, and render typed cell failures, advisory issues, omitted records, and charge-refusal evidence.

CLI stream IDs restart on reopen, so using them as durable turn or drain identities caused effect replay hash conflicts. Use fresh durable identities while cancellation continues to target the observed TurnStarted ID. Verify catalog refresh leaves pending user input and unrelated work untouched.

Release-Notes: Update the Lash runtime pin and adopt its process, capability, and failure-report contracts; prevent replay identity collisions on resume.
Use the same session observer scope for periodic snapshots and post-cancel refreshes. Keep all live rows and limit retired results to PROCESS_RETENTION. The upstream registry still scans observer records before filtering in memory; this bounds returned history and benefits from batched lease reads.

Mitigates #15

Release-Notes: Reduce process dock snapshot work while preserving its ten-second retention and observer visibility.
Default to require_guarantee and allow explicit bounded duplicate billing in config.json. Apply the host policy to every shared opener invocation and to the core defaults used for native queued work and child sessions; durable policy serialization cannot preserve this choice.

Release-Notes: Configure charge_safety for fresh, cleared, resumed, interactive, and autonomous sessions.
Update session, trace, and remote stamps and derive their test expectations from runtime exports. Explain reset scope, charge safety, retry jitter and Retry-After refusal, and verify refusal without old-home mutation plus charge policy reapplication on fresh and resumed sessions.

Release-Notes: Document runtime compatibility and charge policy, with end-to-end reset and retry coverage.
Delete the plan-mode plugin, /plan UI extension, plan dock state and rendering, and feature-specific activity and test coverage. Keep the generic extension seam and process-dock behavior intact.

Release-Notes: removed plan mode and the /plan command
Preserve settled rows across differential renders, verify incarnation-scoped process lifecycle and retention, clarify resume aliases, and stop explicitly when frozen quickstart prerequisites are absent.

Release-Notes: Correct operator runbook gates and document unavailable quickstart prerequisites.
Keep active-turn targeting unset after dispatch until Lash reports the durable turn identity. This prevents Esc cancellation and current-turn injection from addressing a phantom target during the dispatch window.

Release-Notes:
@SamGalanakis
SamGalanakis merged commit c0f1a6c into main Sep 8, 2026
4 checks passed
@SamGalanakis
SamGalanakis deleted the upgrade/lash-46dfed8 branch September 8, 2026 09:54
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