Repository navigation
P1: restore approved carrier rebind on fresh direct-dispatch admission #402
Description
Problem
The minimal direct-dispatch surface can prepare resumable writer admission only when the current transport session is already paired to an approved #62 carrier.
On a fresh/reconnected MCP session this creates an operability dead-end:
fresh/reconnected direct-dispatch session
-> open_workspace
-> work_resume_prepare
-> "A current paired carrier is required"
The fail-closed requirement itself is correct. The defect is that the minimal direct-dispatch surface has no narrow way to rebind an already approved carrier before work_resume_prepare.
Fresh evidence — 2026-10-06
Canonical repository main:
f7c0d2d0fddf0d2ffe8caee62715159dec6541b7
Current connected Dev M5 runtime observed through agent_preflight:
- source:
ed5e425b5a58032795c0aa2127b1b14e241d08fb - build:
devspace-1.0.7-ed5e425b
Observed current-session behavior:
coordination_carrier_status->A current paired carrier is required- existing isolated workspace remains loaded and clean, so the failure is carrier/session binding, not workspace disappearance.
Current source boundary:
DIRECT_DISPATCH_TOOL_NAMESexposes exactly the minimal worker lifecycle includingwork_resume_prepare, but nocoordination_pair,coordination_resume, orcoordination_carrier_status.work_resume_prepareaccepts onlyworkspaceId+contractPurpose.- Its handler immediately calls
carrierBindings.status(context); there is no optional credential rebind before that status lookup. - The full coordination surface already has the P1: preserve coordination carrier continuity across MCP calls and expose recovery-safe read surfaces #378 pattern:
coordination_carrier_status/coordination_lease_readaccept optionalcarrierCredentialand redeem exactly that existing carrier on a fresh MCP session.
Therefore a fresh direct-dispatch session cannot recover the positive writer-admission path using only its intentionally minimal surface, even when an approved carrier credential already exists.
Important non-bug / safety boundary
An unbound fresh session without approved carrier evidence must continue to fail closed.
This Issue must NOT:
- auto-mint a carrier;
- bypass Owner approval;
- make carrier authority global;
- weaken expiry/revocation/client/session checks;
- re-expose the broad coordination/Core tool surface;
- let
work_resume_preparechoose repository, base, scope, goal, or authority.
The already-approved carrier remains the sole source of repository/base/scope/expiry/worktree_write authority.
Required outcome
Provide one narrow rebind path on the direct-dispatch admission route so a fresh/reconnected session can prove an existing approved carrier before resumable-work preparation.
Preferred minimal shape, if source review confirms it fits existing #378 semantics:
- add an optional existing-carrier credential input to
work_resume_prepare; - redeem/rebind that exact credential first;
- then run the existing
carrierBindings.status(context),worktree_write, base-SHA, workspace, lease and resumable-work checks unchanged; - never return the credential.
An equivalent narrow mechanism is acceptable if it preserves the 11-tool isolation intent and does not expose the broad coordination surface.
Acceptance criteria
- already-bound same-session
work_resume_preparebehavior is unchanged; - fresh direct-dispatch session + no credential still fails closed before any provider/file effect;
- fresh direct-dispatch session + exact valid approved carrier can rebind and prepare resumable work;
- invalid, stale, expired, revoked, wrong-client, or otherwise foreign carrier evidence fails closed;
- carrier lacking
worktree_writefails closed; - carrier base SHA mismatch against workspace HEAD still fails closed;
- exact replay preserves the same workKey / lease rather than creating a second writer;
- returned
resumableWorkremains consumable byagent_startonly witheffectHandle == attemptKey; - direct-dispatch projection remains minimal and does not expose broad coordination/Core actions;
- deterministic regression covers reconnect/new MCP session -> approved-carrier rebind ->
work_resume_prepare-> positiveagent_start; - live connector canary proves the same fresh/reconnected flow on the deployed generation without Owner CLI fallback during the dispatch itself.
Relationship to existing Issues
- P1: preserve coordination carrier continuity across MCP calls and expose recovery-safe read surfaces #378 owns generic coordination-carrier continuity and introduced explicit per-call existing-carrier rebinding on full coordination recovery/read surfaces.
- P1: lock direct-dispatch admission positive path in regression tests #396 owns direct-dispatch admission regression coverage and correctly requires a fresh/unbound negative control plus a bound positive path; it explicitly forbids automatic carrier minting or broad coordination/Core re-exposure.
- P0: interrupted-turn resume/dedup and worktree writer lease #328 owns resumable-work / writer-lease identity across interruption and reconnect.
This Issue is the missing bridge between #378's safe per-call rebind mechanism and #396/#328's minimal direct-dispatch admission path.
Claim ceiling
Source tests alone are insufficient. Do not claim this fixed until a real fresh/reconnected direct-dispatch connector call can rebind an already-approved carrier, prepare resumable work, and reach the positive agent_start admission path on the loaded runtime generation.
Activity
github-actions commentedon Oct 6, 2026
Authority:
RESEARCH_OBSERVATION_ONLY / NO_ENGINEERING_AUTHORITYHybrid replication capture receipt
{ "body_gzip_base64": "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", "capture_sha256": "43f2921d96e13dcebc4dbd607e6b9575dc3840e230cdc8c8a1a7e72a633d9287", "captured_at": "2026-10-06T15:14:20Z", "contract_sha256": "9c61eabee01592600bd85f2db61ed7a37d5d76f39a3eacc16b7177fd266ed021", "created_at": "2026-10-06T15:11:23Z", "default_branch": "main", "issue_number": 402, "issue_updated_at": "2026-10-06T15:11:23Z", "pre_implementation_revision": "f7c0d2d0fddf0d2ffe8caee62715159dec6541b7", "repository": "James3014/devspace", "schema": "nexus.hybrid_replication.capture.v1", "source_event_id": "actions:37485738222:1", "title": "P1: restore approved carrier rebind on fresh direct-dispatch admission" }github-actions commentedon Oct 6, 2026
Authority:
RESEARCH_OBSERVATION_ONLY / NO_ENGINEERING_AUTHORITY{ "activation_boundary": "2026-10-05T03:00:24Z", "activation_state": "AUTOMATIC_CAPTURE_READY", "admitted_at": "2026-10-06T15:14:20Z", "capture_sha256": "43f2921d96e13dcebc4dbd607e6b9575dc3840e230cdc8c8a1a7e72a633d9287", "disposition": "ADMITTED_PRIMARY_FRESH_TASK", "exclusion_set_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "implementation_pr_numbers": [], "issue_state_at_admission": "open", "receipt_sha256": "34b408d14af73df52b3de1c574364a530e3b68ee23a8005cc0c7f985c78248b3", "schema": "nexus.hybrid_replication.admission.v1", "task_key": "James3014/devspace#402", "tracked_parent_created_at": null, "tracked_parent_issue_number": null }James3014 commentedon Oct 6, 2026
Fresh cross-repo reproducer from Nexus-new #1419
This Issue is still the correct owner for the current blocker.
Triggering workflow
James3014/Nexus-new#1419Wave 2 reached terminal source/Core integration:2dbce63e36b44b42a2d1ac5cdb247f3c3803c144e86e720e86df053b623de78ce5d2919f3c300312456c8cb0b69df9e03cd2cf5e07f81e82d5da2f2bFresh Dev M5 observation
Connected Mini Dev M5:
devspace-1.0.7-ed5e425bed5e425b5a58032795c0aa2127b1b14e241d08fbFirst host-control shell attempt failed before the requested readback/sync effect with:
P0_WRITER_ADMISSION_FAILED / NEXUS_ADMISSION_REQUIREDAttempting the documented resumable-work preparation then failed with:
work_resume_prepare -> A current paired carrier is requiredFresh readback confirmed the same session boundary:
coordination_carrier_status -> A current paired carrier is requiredNo host-sync/restart/retry/deployment effect was started.
Attribution
This is not a Nexus-new #1419 implementation defect. The merged #1419 source/Core evidence is terminal.
The fail-closed carrier requirement itself remains correct. The operability defect is the #402 seam: a fresh/reconnected Dev MCP session has no narrow positive path to rebind already-approved writer authority before
work_resume_prepare, so an otherwise-complete cross-repo workflow stalls at host-control admission.This reproducer also shows the impact is not limited to delegated worker launch; it blocks bounded post-merge host runtime sync/readback needed to close an exact engineering generation.
Fresh repository state
Current DevSpace GitHub main observed during this reproducer:
62452b0eeb748d8d749f06e02f96b0d28ec878c9PR #404 (
fix: rebind approved writer authority on direct dispatch) is currently closed / unmerged, so it does not close this live blocker.Required claim boundary
Do not weaken fail-closed admission, auto-mint a carrier, or broaden the direct-dispatch surface. The required closure remains:
fresh/reconnected session
-> prove/rebind one existing approved carrier through a narrow safe mechanism
-> existing
work_resume_preparechecks unchanged-> exact replay preserves work/lease identity
-> live connector canary proves positive admission without Owner CLI fallback.
Disposition:
REPRODUCED_CROSS_REPO / DEV_MCP_CONTROL_PLANE_BLOCKER / #402_REMAINS_OPEN.AUTO_CHAIN=false.
James3014 commentedon Oct 6, 2026
Source fix is merged; live runtime deployment is now the only blocker
Fresh verification shows the #402 source repair is already integrated via merged PR #397.
Source:
5eb5baab0fc0af36256f5af25818e0a3ca6b8d2662452b0eeb748d8d749f06e02f96b0d28ec878c9The merged repair adds the narrow
carrierCredentialrebind input towork_resume_prepare, preserves fail-closed behavior when no approved credential exists, keeps the direct-dispatch surface minimal, and includes the positive fresh-session -> approved-carrier rebind -> resumableWork -> agent_start regression.Live runtime remains stale
Current Mini Dev M5:
ed5e425b5a58032795c0aa2127b1b14e241d08fbdevspace-1.0.7-ed5e425bae48b299-f912-4e80-9407-cd0c54eec9afCurrent model-facing
work_resume_prepareschema still does not exposecarrierCredential, proving the loaded runtime has not activated the merged #397 repair.Cutover state
Existing historical cutover is terminal/closed; no unresolved deployment effect owns the current generation.
No new cutover/restart/deployment effect was started.
Fresh Owner-approval gate
A fresh pairing was created for the bounded live deployment/canary attempt:
pair_16779985-4de7-47fe-b536-ffd0ca94de95Attempted
coordination_resumereturned:AUTHORITY_REQUIRED: Pairing pair_16779985-4de7-47fe-b536-ffd0ca94de95 is awaiting host Owner approval.Required local approval command reported by canonical Dev M5:
devspace carriers approve pair_16779985-4de7-47fe-b536-ffd0ca94de95 --contract <contract.json> --confirm pair_16779985-4de7-47fe-b536-ffd0ca94de95This is the correct fail-closed boundary. The controller must not auto-mint or bypass that Owner authority.
Remaining #402 closure gates
work_resume_prepare(..., carrierCredential)=> succeeds;agent_startadmission works witheffectHandle == attemptKey.Disposition:
SOURCE_FIXED / LIVE_RUNTIME_STALE / OWNER_APPROVAL_REQUIRED_BEFORE_DEPLOYMENT.AUTO_CHAIN=false.
james3014-nexus-agent commentedon Oct 16, 2026
Closing as superseded — the tool surface this Issue repairs no longer exists (2026-10-16)
Fresh check on devspace main
e1caddf(2026-10-16):work_resume_prepare,coordination_pair,coordination_resumeandcoordination_carrier_statusare not registered as MCP tools anywhere insrc/server.ts(zero occurrences). The direct-dispatch projection is the fixed 12-tool set inDIRECT_DISPATCH_TOOL_NAMES, andsrc/server.test.ts(~L3335-3390) asserts thatwork_resume_prepare,resumableWorkandcarrierCredentialare absent from both the tool list and the instructions.agent_starttakesattemptKey/expectedHead/writePathsdirectly (the Nexus admission layer was removed from DevSpace under Nexus-new P0 P0: remove Nexus governance from Dev MCP and keep direct coding/dispatch only #413).cutover_start,dependency_sync); Carrier stays only for recovery of historical bound records.So the "fresh session cannot rebind an approved carrier before
work_resume_prepare" dead end cannot occur on current main; there is nothing left to rebind. The source repair (#397) is moot rather than pending a canary.Disposition:
SUPERSEDED_BY_SURFACE_REMOVAL_AND_C4 (#471). Reopen only if a Carrier-gated writer admission tool is reintroduced.