Repository navigation
Upgrade to Lash main 9debf5aab: turn-start identity, dock retention, lash-core elimination - #16
Merged
Merged
Conversation
Select queued-work ownership explicitly: interactive and fixture cores run without background queued work, while autonomous cores use the native queued-work driver. Rename the native effect host and preserve the CLI-owned visible-turn and selected catalog-drain contract. Adopt TurnStarted as the sole active-turn targeting signal for direct, ordinary queued, and selected-batch turns (FIG-2205), with exact-cancellation and complete-commit-budget regression coverage. Complete the Lash facade migration and remove direct lash-core dependencies (FIG-2206). Keep the BLAKE3/schema-45 transition forward-only through preflight refusal and --reset, derive version assertions from upstream constants, and document response-start plus MCP shutdown timing configuration. Release-Notes: Existing schema-44 stores require `lash --reset`; provider configs may set `options.reliability.response_start_timeout`, and MCP servers may set `graceful_period_ms` and `post_kill_wait_ms`.
Prefer TurnStarted for active-turn targeting, but publish the emitted turn id from the first physical-turn activity if the ordering contract regresses. This lets release builds degrade gracefully without losing Escape-cancel targeting while retaining the debug tripwire for announced/emitted id divergence. Release-Notes: none (internal resilience fix)
Document restored durable subagent process admission with dock and process-store lifecycle gates. Clear capture immediately after each resume-picker escape so later commands wait for a freshly dismissed frame. Release-Notes: none (runbook documentation only)
The Running-filtered process snapshot feed starved the dock of terminal transitions, so fast background processes could flash or never render. Use list_all() with a durable recency guard to retain tracked completions for the existing 10-second window without resurrecting stale terminal rows. Carry the observation timestamp in a typed ProcessSnapshot instead of hiding metadata in the process definition. Fixes #14. Release-Notes: background processes that finish quickly now appear in the dock for a short window instead of flashing or never rendering.
The differential renderer never re-emits unchanged rows, so post-clear gates must target rows the next action repaints. Release-Notes: none (runbook documentation only)
The post-cancel refresh still used the running-only process list, so a cancelled process inside its retention window vanished from the dock and then reappeared with a fresh window on the next full snapshot. Release-Notes: none (follow-up to the dock retention fix)
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.
Upgrade lash-cli from Lash main
8dac97fa5to9debf5aab(git pin, not a release), adopting the fixes Lash landed for our filed feedback and the two product bugs the verification battery surfaced.What changed
9debf5aab. 57 upstream commits. Version stamps (all derived): session schema 45, trace schema 10, remote protocol 49. The BLAKE3 identity cutover is a forward-only durable-format change: pre-45 stores are refused by preflight with detected/expected stamps;--resetstarts fresh (no migration, per upstream contract)..without_queued_work()(preserving the CLI-owns-visible-queued-turns contract from Queued next-turn input executes headlessly via the post-turn catalog sync drain — user row and response never render #12), autonomous cores.with_native_queued_work().InlineEffectHost→NativeEffectHost.TurnEvent::TurnStarted { turn_id }is now the preferred source of active-turn identity for Escape-cancel targeting; the old first-activity inference remains only as a release-mode fallback (warn + adopt) with a debug tripwire on id divergence. Tests proveTurnStartedarrives first and immediately targets cancellation for direct turns, queued turns, and selected-batch drains.lash-coredependency eliminated (FIG-2206 landed).PruneStateandtesting::run_toolmoved to facade homes; zerolash_core::references remain in the workspace.8dac97fa5was a regression window). The dock snapshot feed now useslist_all()with a recency guard, so the existing 10-second terminal retention window actually functions; sub-second processes render deterministically instead of by snapshot luck. Post-cancel refresh uses the same all-statuses feed.options.reliability.response_start_timeout(ms) and per-MCP-servergraceful_period_ms/post_kill_wait_ms. No new CLI flags.RuntimeCommitagainstCommitBudget(CLI policy unchanged at 1 MiB / 512 rows).processes.dbcross-check); resume-picker gates rebuilt as action-driven repaints (a differential renderer never re-emits unchanged rows, so post-cleargates must target rows the next action repaints).Verification
cargo fmt --check; workspace clippy-D warnings;cargo test --workspace(463 passed);cli_e2e12/12;scripts/check_docs.py; operator battery: quickstart, turn-flow-and-queueing (all gates including queued next-turn delivery and slow-turn exactly-once), cancel-semantics, process-dock (restored contract incl. durable lifecycle cross-check), resume-picker (all five score rows) — all PASS on this pin.Review outcome
Independent fresh review of the re-pin diff approved the design and requested one change (adopted): keep the first-activity fallback so a release build degrades gracefully if the upstream
TurnStarted-first ordering ever regresses. A second focused review of the post-review delta approved the fallback as defensive-only (the sink cannot receive a foreign turn id) and flagged the dock feed's polling cost —list_all()does one serialized lease lookup per ever-observed process on the ~250ms snapshot cadence, monotonic per session — tracked as #15 with two bounded fix directions; the requiredmodals.rsall-statuses fix is included here.Release-Notes
9debf5aab). Pre-existing stores (schema ≤44) are refused with a clear stamp report; use--resetto start fresh (BLAKE3 identity cutover, no in-place migration).options.reliability.response_start_timeout(ms), MCPgraceful_period_ms/post_kill_wait_ms.