feat: add stable thread refs and flat cli#33
Merged
Conversation
Contributor
Author
This stack of pull requests is managed by Graphite. Learn more about stacking. |
d93d9c1 to
ef6f89d
Compare
Contributor
Author
ef6f89d to
22440a2
Compare
galligan
added a commit
that referenced
this pull request
Jun 5, 2026
## Context Bumps `outfitter-dispatch` to `0.4.0` after the stable refs / flat CLI work landed on `main` via PR #33. ## What changed - Updated the project version in `pyproject.toml` from `0.3.0` to `0.4.0`. - Updated the editable package entry in `uv.lock` to match. ## How to test - `uv run dispatch --version` -> `dispatch 0.4.0` - `just check` -> `190 passed, 9 deselected`, build and package contents check passed, and `dist/outfitter_dispatch-0.4.0.*` was built. - Live dispatch smoke with isolated `DISPATCH_HOME`: - `dispatch new` created a real managed Codex thread on `gpt-5.3-codex-spark`. - The worker ran `UV_CACHE_DIR=/tmp/dispatch-smoke-uv-cache uv run dispatch --version` and observed `dispatch 0.4.0`. - The worker confirmed `dispatch schema send` includes `ref`, `id`, `title`, and `managed` in the output schema. - `dispatch send` follow-up returned the identity-rich `ActionAck`, and the worker replied via `dispatch tail`. ## Risks / notes - The first read-only live smoke could not run `uv run` because UV needed a writable cache, then fell back to the older globally installed `dispatch 0.2.1`. The successful smoke used `workspace-write` only to permit a temp UV cache; no repo files were changed by the smoke worker. - Both smoke threads were archived after verification.
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.

Context
Implements the stable refs and flat CLI/MCP reshape from
.agents/plans/stable-refs-flat-cli/PLAN.md, stacked on PR #32 (feat/top-level-thread-actions). Full Codex thread ids remain accepted; dispatch refs are stored local selectors for managed lanes; titles and@handlesare mutable convenience labels.What changed
attach,list,get,tail,watch,sync; split persistedtailfrom bounded livewatch.dispatch_thread_read,dispatch_thread_write, anddispatch_thread_destroywhile preserving safety annotations.lane,ref, fullid,title,handle,managed,source,status, andcwdfor send/goal/sync/tail/watch-style outputs.How to test
uv run pytest tests/core/test_handlers.py tests/core/test_triggers.py tests/surfaces/test_mcp_routing.py tests/surfaces/test_parity.py tests/core/test_examples.py -quv run dispatch schema senduv run dispatch schema 'goal status'uv run dispatch schema syncuv run dispatch schema tailuv run dispatch schema watchuv run ruff check src/outfitter/dispatch testsuv run ruff format --check src/outfitter/dispatch testsuv run mypy src tests --strictjust checkRisks / notes
created_at, idorder.laneremains in these output payloads as a compatibility field for the full Codex thread id;refandidare the stable thread-oriented fields for new consumers.search --laneandstop --laneremain accepted compatibility aliases, but docs teach--thread/ positional selectors as canonical.