Return to parent on child auto-archive; GPT-6 low execution default - #364
Merged
Conversation
An Orchestrate child auto-archived on completion dropped the user on the generic empty page. The UI store now owns one reconcile step, run after every index mutation: the thread on screen leaving the visible index hands the workspace to its still-visible parent, and otherwise falls back to the new-thread draft of the last interacted project. Only the conversation on screen is reconciled, so background archives never steal navigation. "Last interacted project" is set from user navigation alone (select_session, start_draft) and persisted through the existing PatchSettings path, so a launch with no selected conversation lands there. The runtime keeps a single standing draft per project surface, so reopening it preserves its composer attachments instead of stranding them on a discarded session id. Only a workspace with no projects reaches the empty page; it now reads as a deliberate add-project state in both locales, and DESIGN.md carries the new contract.
The dedicated early return skipped the effort-prefix merge that every other legacy row receives; the generic path already preserves customized Sol rows.
This was referenced Sep 7, 2026
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.
Closes #361
Closes #362
Closes #363
#361 — navigation after a viewed child is auto-archived
reconcile_destination) after every Index event. Only the on-screen conversation is reconciled, so background/batch archives never steal navigation.select_session,start_draft) and persisted asSettings::last_project_id. Missing project → first listed; no projects → the add-project page.start_draftreturns the standing draft for the same (project, cwd), so composer attachments and the draft's terminal survive. An in-flight guard prevents duplicate drafts.docs/DESIGN.md; locale copy updated in both files.#362 — GPT-6 execution default and Astra's Computer Use role
codex app-servermodel/list) exposes no plaingpt-6; the only GPT-6 ID isgpt-6-astra. The bundled execution default is therefore a separatecodex / gpt-6-astraexecution row whose description sets low effort as the baseline. The Astra collaboration row is unchanged; the two are distinct profiles.builtin_decision_definition/builtin_child_definition).gpt-6-astraexecution row is never duplicated.astra.md/workflow.mddefine Astra's Computer Use responsibility: focused observe/inspect/read evidence for the lead's decision;act_ui/wait_foronly on explicit brief within the thread's access mode; sweeps and code changes still go todispatch. A runtime test proves read-only collaboration children receive the Computer Use registration when enabled.#363 — independent collaboration and execution lists
Covered by the per-list uniqueness work above: each add picker excludes only its own list, the add guard and settings patches check the destination list only, load-time normalization dedupes within each list, and restore-default resolves the role-specific bundled text. The old cross-role rejection test is replaced by within-role dedupe coverage, and runtime resolution is exercised with one role disabled or on a different endpoint.
Tests
Store (real host + Index events): archive viewed child → parent; archive other thread → unchanged; batch archive without visible parent → standing draft reused with UI state; startup lands on remembered project / no projects → nothing selected. Each fails without the reconcile step.
Settings: literal older JSON for untouched/customized Sol shapes, no-duplicate Astra, per-list dedupe, legacy tier merge. Runtime: explicit
gpt-6-astraatlowresolves as expected, collaboration still capped to medium/high, loaded-catalog-missing-model error text, collaboration child Computer Use registration. UI: role-aware restore target.Checks run locally (macOS)
cargo fmt --all --check,cargo clippy --workspace --all-targets --locked -- -D warnings,cargo test --workspace --locked— all pass. Mobile/Web targets andcargo macheteleft to CI.Gaps
IndexRemoveProjectremovesProjectDraft(project_id)while draft destinations carry the draft session id, so deleting a project can leak oneconversation_uientry. Unchanged here; worth a follow-up issue.