Release MCP 3.0.0rc7: native chats and enforcement-first orchestration - #106
Conversation
…3-codex-app-server
…keyboard foundation Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…for the cockpit Hoist the 2500ms catalog poll driver out of Chats into data/catalogPoll (refcounted, Chats consumes unchanged); add the /api/events seat-event subscription with a per-connection backlog gate and poll-authoritative dedup; add sessionCockpitStore (per-kind pendingSets, acknowledged set ledger, five-tier launch evidence), full catalog-row wire types, and the single-source stateGrammar (2.4s ease-in-out pulse, effects-off + reduced-motion respected). Ship the ruled SessionRail (flat command spine, active-first leaf clusters, dot|role|title|status|End rows, attention strip with zero-state suppression, gate badges, bus footer, two-state brief column, completed folders + master/sprint bulk end with honest previews, smart-default focus) plus the SessionStage container and HeaderStrip with the empty ModelEffortControl slot for L4 and reserved WorkingLine slot for L6. 59 test files / 643 tests passing; production build green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…cycle actions Add PtySurface wrapping the lazy Terminal with keep-alive and fit rules preserved, two-archetype honesty (controlled sessions render the runner line-log; legacy raw panes host the vendor TUI with bell/OSC harvesting), a measured DOM-renderer decision (in-repo bench harness; webgl addon lazy-loaded, software-GL caveat recorded), opt-in screenReaderMode, and named pane landmarks. Add the InteractionBar on the single interaction axis — answers travel exclusively through the gate-decision channel, kind-aware with full round-trip states and the queued- message honesty hint. Add the WorkingLine in L2's reserved slot (plain working word, ~elapsed turn clock, UA-7-gated stop control, slow-pulse glyph only) and terminate/retire flows with honest confirms, landed-cleanup previews, and focus-independent stop-residual capture rendered informationally. 66 test files / 715 tests passing; production build green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… grammar Add the dynamic-only capabilityCatalog store (per-harness envelope with cacheStatus honesty, verbatim 404/409/503 surfacing, no client fallback, explicit refresh-chaining semantics, per-row envelope validation), the typed contract fixture pack asserted against the recorded conformance samples, and the LaunchFlow: complete-pair or vendor-defaults launches, launchSettable filtering, advertised-order efforts, verbatim Pi keys, model/effort-extended open requests, and all four response paths (200-starting, verbatim 400, 409 leaf-taken naming the owner, 409 launch-selection-conflict with retained-vs-attempted pairs and focus-existing). Uniform async fail-loud across all three harnesses with the failed-launch banner rendering bridgeError verbatim (Retire + Launch-corrected, never auto-retry). EvidenceBadge in grammar/ with the five-tier machine gated on control state; Claude launch effort capped at model-validated. Synced onto the L6 tip with the banner-above-pty-surface resolution. 73 test files / 825 tests passing on the merged state; production build green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ded/unresolved/expired vocabulary, rebinding, scoped custody, relay resilience
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7bfeb13a40
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| for position, upload in enumerate(uploads, start=1): | ||
| staged.append( | ||
| stage_one(kind_capabilities, assets_root, request_id, upload, position=position) | ||
| ) |
There was a problem hiding this comment.
Roll back files after a partially failed stage
When a multipart request contains a valid first asset and an invalid later asset, the first stage_one call has already written its file before the later call raises. Because the AttachmentOperation is inserted only after this loop completes, no retained record or expiry sweep can find that file, so repeated rejected requests can leave up to 5 MB per successfully written prefix in the spool indefinitely. Validate every upload before writing, or delete staged in an exception handler.
AGENTS.md reference: AGENTS.md:L196-L198
Useful? React with 👍 / 👎.
| if channel is None: | ||
| while len(self._channels) >= MAX_CHANNELS_PER_APP: | ||
| self._channels.popitem(last=False) |
There was a problem hiding this comment.
Do not evict channels containing live operations
When a 65th (session, epoch) channel is created, this unconditional LRU pop can discard a channel containing staged/recoverable attachments or unresolved submissions and withdrawals. Previously issued references then become not-found, and dropping their AssetRecords also prevents the TTL sweep from deleting the underlying files. Evict only terminal channels after reclaiming their resources, or refuse admission when every retained channel is live.
AGENTS.md reference: AGENTS.md:L196-L198
Useful? React with 👍 / 👎.
| if entry.control_endpoint is not None: | ||
| try: | ||
| stop_control_session(entry) |
There was a problem hiding this comment.
Reclaim the attachment spool when retiring a session
When a harness is retired while it has staged or recoverable attachments, this path stops the bridge and tmux session but never releases the conversation services or removes entry.control_endpoint.parent / "assets". Attachment expiry is only swept during later control requests, but those requests cannot resolve a retired session, and neither release_session implementation has a caller, so these files remain in the workspace indefinitely. Retirement should explicitly reclaim the session's control state and attachment spool.
AGENTS.md reference: AGENTS.md:L196-L198
Useful? React with 👍 / 👎.
…cement-first-architecture
Closes #105.
Summary
3.0.0rc7Validation
cfbe64579af07f8cda18b5c25bbfe098(full mode, exit 0)Known RC limitation
Codex Desktop history discovery works with the tested live client, but exact open/resume deliberately refuses when the initialize response reports
0.147.0whilethread/resumereports0.147.0-alpha.6.5. The refusal preserves protocol honesty instead of masking an incompatible client identity.Release
After this PR merges,
mcp-v3.0.0rc7will be tagged on the merge commit. The tag-driven publish workflow will build and publishagents-remember-mcp==3.0.0rc7; the GitHub prerelease will be published after that workflow succeeds.