Summary
DevSpace currently closes bounded repository engineering well (workspace/worktree isolation, delegated workers, Candidate commits, physical reconciliation, cutover/restart mechanics), but there is a missing control-plane seam between an independently verified Candidate and a small, explicitly authorized mutation to host-scoped production artifacts outside repository workspaces.
This gap was exposed by the 2026-09-13 Nexus / OpenSWE / OpenCLI G0 production-closure work. The OpenCLI long-protocol submit regression was diagnosed, repaired, independently reviewed, and physically canaried through real OpenSWE → OpenCLI → ChatGPT Web. However, the final production activation targets live under host-owned locations such as ~/.opencli, the global OpenCLI package install, and the installed nexus-open-swe-runtime launcher. Current DevSpace workspace/file mutation tools correctly refuse those paths, while bash is intentionally not a general host-mutation escape hatch. Delegating the activation to a background worker is also correctly blocked.
The result is an undesirable final state:
Candidate implemented PASS
Focused verification PASS
Independent review PASS
Real semantic canary PASS
Fresh reconcile PASS
Zero resend PASS
Host production activation MANUAL OWNER TERMINAL STEP
The architectural goal is to remove that last manual terminal dependency without introducing arbitrary host shell/write authority.
Canonical ownership / consumers
Implementation owner: DevSpace — local execution/control transport.
First acceptance consumers:
James3014/Nexus-new — governance/integration consumer and production-closure evidence.
James3014/nexus-open-swe-runtime — installed external execution runtime / launcher consumer.
- OpenCLI ChatGPT adapter overlay — first concrete host-activation fixture.
This Issue must not move planning, Workforce Admission, Candidate acceptance, Completion Certification, merge, release, or production-claim authority into DevSpace.
Observed G0 evidence
Defect that triggered the gap
OpenCLI submitChatGPTMessage() treated a successful button.click() as successful submission even when the ChatGPT Web UI had not observably accepted the long OpenSWE protocol prompt and no /c/<conversation-id> was created.
The repair changes submit acknowledgement so success requires an observable effect such as an appropriate composer transition, generation state, user-turn transition, or conversation URL transition. A transient/missing composer alone must not be accepted as success.
Candidate evidence
Immutable local Candidate:
commit: f131c9f4533f874e311376f2e6aeb5bc50de1135
Changed source scope:
clis/chatgpt/utils.js
clis/chatgpt/utils.test.js
Verification:
Focused Vitest: 4/4 PASS
node --check: PASS
git diff --check: PASS
Independent rereview: REVIEW_PASS
Real Candidate canary:
installed nexus-open-swe-runtime
→ OpenSWE / Deep Agents
→ OpenCLI
→ production browser profile m5c6uje4
→ ChatGPT Web
→ glob
→ read_file
→ record_finding
→ INTELLIGENCE_COMPLETED
→ outcome_unknown=false
→ project_name=nexus-open-swe-runtime
Fresh-process semantic_reconcile returned the same terminal result and physical conversation readback showed no additional resend turn.
Current live activation identity
Production live has intentionally not been changed yet.
Current preimages:
OpenCLI adapter SHA256:
72c1689e90d0557341d59f8e0a01246662d9aac56006d47d9c921986294e44da
OpenCLI adapter test SHA256:
01c5fad3f2a53ab8c487d9579a20fdf393eb56b8a74690f4a6bb2c435493b82f
launcher SHA256:
dc823725b78e29e314f2e68f53c70bda2a8492dcc937721c51f9cd5df0d7f33a
Dry-run postimages for the bounded submit-ack overlay:
OpenCLI adapter SHA256:
c668f6788ee028715282c19ec84c840f6a49cdcb61f3c1b54ca3be3e93dabda5
OpenCLI adapter test SHA256:
682c21b24d4019519ef9b389601d043f7a8a1a3a45975c4a02005a2e833cef66
launcher SHA256:
abfe07a582ad2f71724f4d4a7c6adef68386b83ce383900cc3629391452b59e5
Dry-run proved the patch can use the accepted live adapter as donor and replace only the submit-ack hunk, preserving the existing local hardening byte-for-byte outside that bounded region.
Problem statement
DevSpace needs a typed, host-scoped activation capability for a small catalog of pre-authorized production artifact classes.
It must provide a safe alternative to all of the following unsafe patterns:
- arbitrary
bash / cp / sed host mutation;
- widening workspace roots merely to gain write access;
- background-agent mutation of unrestricted home/global paths;
- blind retry after activation transport failure;
- treating a local process exit as proof that all host mutations either happened or did not happen;
- whole-file replacement when a bounded donor-preserving overlay is required.
Required capability shape
Names are illustrative; preserve one canonical implementation rather than duplicating equivalent surfaces.
host_activation_prepare
host_activation_apply
host_activation_status
host_activation_reconcile
host_activation_rollback
Equivalent naming is acceptable if the contracts below are preserved.
1. Catalog-bound activation kinds
The caller must select a server/repository-defined activation kind. The caller must not supply arbitrary executable commands or unrestricted host paths.
Example initial kind:
OPENCLI_CHATGPT_ADAPTER_OVERLAY
Its target-set policy may resolve internally to the bounded known surfaces needed for this runtime generation, such as:
user OpenCLI ChatGPT adapter override
global packaged OpenCLI ChatGPT adapter
corresponding focused adapter tests
installed nexus-open-swe-runtime OpenCLI launcher pin
activation rollback bundle
The exact host paths should be server-side policy/catalog data, not caller-selected arbitrary paths.
2. Exact preimage fencing
prepare / apply must bind exact current physical identity before any mutation.
At minimum, every target carries:
target_id
expected_preimage_sha256
expected postimage identity or deterministic patch identity
Any drift must fail closed with a typed result such as:
No fuzzy or best-effort application.
3. Donor-preserving bounded transformation
For overlay-style activations, the system must support a contract equivalent to:
accepted live donor
+ exact bounded transformation
= deterministic postimage
This is required when the live artifact contains accepted local hardening that must not be erased by replacing it with an older upstream/Candidate full file.
4. Rollback bundle before first write
Before the first possible host effect, persist a durable rollback bundle containing all target preimages and activation metadata.
The rollback bundle must be independently addressable by the activation operation identity.
5. Durable operation identity before first effect
Create and persist a stable activation operation ID before the first host mutation.
The same durable operation identity must survive:
- caller timeout;
- Dev MCP transport failure;
- controller restart;
- host process failure;
- partial multi-target application.
6. No blind resend
OUTCOME_UNKNOWN != retry permission applies to host activation exactly as it does to external semantic effects.
After an ambiguous transport/process outcome, callers must use host_activation_status / host_activation_reconcile on the same operation, not start a replacement activation.
7. Physical outcome classification
Reconciliation must re-read target bytes and classify the real host state. At minimum:
CONFIRMED_NO_EFFECT
APPLIED
PARTIAL_EFFECT
ROLLED_BACK
EFFECT_UNKNOWN
BLOCKED_PREIMAGE_DRIFT
PARTIAL_EFFECT and EFFECT_UNKNOWN must never be silently mapped to success.
8. Multi-target consistency / rollback
For an activation with mutually pinned targets (e.g. user adapter, global adapter, launcher expected SHA), closure requires all target postimages to match.
If an intermediate step fails and deterministic rollback remains possible, restore all preimages and prove physical rollback by readback.
If rollback cannot be proven, return PARTIAL_EFFECT or EFFECT_UNKNOWN and pin the operation for reconciliation.
9. Physical readback is acceptance evidence, not worker summary
Successful process completion is insufficient.
APPLIED requires exact postimage readback for every governed target.
10. Separate activation from production acceptance
Host activation does not grant final Nexus/OpenSWE production acceptance.
For the G0 acceptance consumer, the downstream chain remains:
host activation APPLIED
→ fresh physical SHA readback
→ launcher dual-pin probe
→ production m5c6uje4 long-protocol canary
→ fresh installed OpenSWE semantic_run
→ INTELLIGENCE_COMPLETED / outcome_unknown=false
→ fresh semantic_reconcile
→ zero resend readback
→ only then production closure
Authority requirements
Support at least these conceptual lanes without conflating them:
OWNER_DIRECT: exact bounded host activation authorized by the Owner.
NEXUS_GOVERNED: only after canonical Nexus authority validation is wired; must fail closed until then.
A model/worker output, Candidate commit, GitHub merge, or test PASS cannot independently mint host activation authority.
Architecture Capability Discovery / reuse-before-invention must remain applicable to write-capable automation. This Issue must not introduce a second browser carrier, second OpenCLI semantic transport, or second deployment truth source.
Non-goals
This Issue does not authorize:
- arbitrary host shell execution;
- arbitrary home-directory writes;
- arbitrary global package mutation;
- arbitrary launchd/service management;
- generic package manager privilege;
- model/worker self-deployment;
- bypassing CapabilityPlanner / Workforce Admission;
- Candidate self-acceptance;
- protected merge/release authority;
- declaring
production_ready from activation alone;
- reimplementing Nexus Completion/Core truth in DevSpace.
Acceptance criteria
A. Contract / safety
B. Negative controls
C. Initial OpenCLI acceptance fixture
Use the already-verified G0 Candidate as the first real fixture.
D. Downstream production acceptance
After host activation, independently prove through the actual consumer path:
Current status / claim ceiling
SOURCE_REPAIR_VERIFIED = true
CANDIDATE_REAL_WEB_CANARY = true
CANDIDATE_SEMANTIC_RUN = INTELLIGENCE_COMPLETED
CANDIDATE_FRESH_RECONCILE = PASS
CANDIDATE_ZERO_RESEND = PASS
PRODUCTION_HOST_ACTIVATION = NOT_DONE
PRODUCTION_CLOSURE = NOT_CLOSED
Do not downgrade this issue to merely documenting the manual activation command. The desired closure is a reusable, bounded, auditable DevSpace host-activation primitive so future accepted Candidates do not end with “Owner must return to Mac Terminal and run one command.”
Summary
DevSpace currently closes bounded repository engineering well (workspace/worktree isolation, delegated workers, Candidate commits, physical reconciliation, cutover/restart mechanics), but there is a missing control-plane seam between an independently verified Candidate and a small, explicitly authorized mutation to host-scoped production artifacts outside repository workspaces.
This gap was exposed by the 2026-09-13 Nexus / OpenSWE / OpenCLI G0 production-closure work. The OpenCLI long-protocol submit regression was diagnosed, repaired, independently reviewed, and physically canaried through real OpenSWE → OpenCLI → ChatGPT Web. However, the final production activation targets live under host-owned locations such as
~/.opencli, the global OpenCLI package install, and the installednexus-open-swe-runtimelauncher. Current DevSpace workspace/file mutation tools correctly refuse those paths, whilebashis intentionally not a general host-mutation escape hatch. Delegating the activation to a background worker is also correctly blocked.The result is an undesirable final state:
The architectural goal is to remove that last manual terminal dependency without introducing arbitrary host shell/write authority.
Canonical ownership / consumers
Implementation owner: DevSpace — local execution/control transport.
First acceptance consumers:
James3014/Nexus-new— governance/integration consumer and production-closure evidence.James3014/nexus-open-swe-runtime— installed external execution runtime / launcher consumer.This Issue must not move planning, Workforce Admission, Candidate acceptance, Completion Certification, merge, release, or production-claim authority into DevSpace.
Observed G0 evidence
Defect that triggered the gap
OpenCLI
submitChatGPTMessage()treated a successfulbutton.click()as successful submission even when the ChatGPT Web UI had not observably accepted the long OpenSWE protocol prompt and no/c/<conversation-id>was created.The repair changes submit acknowledgement so success requires an observable effect such as an appropriate composer transition, generation state, user-turn transition, or conversation URL transition. A transient/missing composer alone must not be accepted as success.
Candidate evidence
Immutable local Candidate:
Changed source scope:
Verification:
Real Candidate canary:
Fresh-process
semantic_reconcilereturned the same terminal result and physical conversation readback showed no additional resend turn.Current live activation identity
Production live has intentionally not been changed yet.
Current preimages:
Dry-run postimages for the bounded submit-ack overlay:
Dry-run proved the patch can use the accepted live adapter as donor and replace only the submit-ack hunk, preserving the existing local hardening byte-for-byte outside that bounded region.
Problem statement
DevSpace needs a typed, host-scoped activation capability for a small catalog of pre-authorized production artifact classes.
It must provide a safe alternative to all of the following unsafe patterns:
bash/cp/sedhost mutation;Required capability shape
Names are illustrative; preserve one canonical implementation rather than duplicating equivalent surfaces.
Equivalent naming is acceptable if the contracts below are preserved.
1. Catalog-bound activation kinds
The caller must select a server/repository-defined activation kind. The caller must not supply arbitrary executable commands or unrestricted host paths.
Example initial kind:
Its target-set policy may resolve internally to the bounded known surfaces needed for this runtime generation, such as:
The exact host paths should be server-side policy/catalog data, not caller-selected arbitrary paths.
2. Exact preimage fencing
prepare/applymust bind exact current physical identity before any mutation.At minimum, every target carries:
Any drift must fail closed with a typed result such as:
No fuzzy or best-effort application.
3. Donor-preserving bounded transformation
For overlay-style activations, the system must support a contract equivalent to:
This is required when the live artifact contains accepted local hardening that must not be erased by replacing it with an older upstream/Candidate full file.
4. Rollback bundle before first write
Before the first possible host effect, persist a durable rollback bundle containing all target preimages and activation metadata.
The rollback bundle must be independently addressable by the activation operation identity.
5. Durable operation identity before first effect
Create and persist a stable activation operation ID before the first host mutation.
The same durable operation identity must survive:
6. No blind resend
OUTCOME_UNKNOWN != retry permissionapplies to host activation exactly as it does to external semantic effects.After an ambiguous transport/process outcome, callers must use
host_activation_status/host_activation_reconcileon the same operation, not start a replacement activation.7. Physical outcome classification
Reconciliation must re-read target bytes and classify the real host state. At minimum:
PARTIAL_EFFECTandEFFECT_UNKNOWNmust never be silently mapped to success.8. Multi-target consistency / rollback
For an activation with mutually pinned targets (e.g. user adapter, global adapter, launcher expected SHA), closure requires all target postimages to match.
If an intermediate step fails and deterministic rollback remains possible, restore all preimages and prove physical rollback by readback.
If rollback cannot be proven, return
PARTIAL_EFFECTorEFFECT_UNKNOWNand pin the operation for reconciliation.9. Physical readback is acceptance evidence, not worker summary
Successful process completion is insufficient.
APPLIEDrequires exact postimage readback for every governed target.10. Separate activation from production acceptance
Host activation does not grant final Nexus/OpenSWE production acceptance.
For the G0 acceptance consumer, the downstream chain remains:
Authority requirements
Support at least these conceptual lanes without conflating them:
OWNER_DIRECT: exact bounded host activation authorized by the Owner.NEXUS_GOVERNED: only after canonical Nexus authority validation is wired; must fail closed until then.A model/worker output, Candidate commit, GitHub merge, or test PASS cannot independently mint host activation authority.
Architecture Capability Discovery / reuse-before-invention must remain applicable to write-capable automation. This Issue must not introduce a second browser carrier, second OpenCLI semantic transport, or second deployment truth source.
Non-goals
This Issue does not authorize:
production_readyfrom activation alone;Acceptance criteria
A. Contract / safety
CONFIRMED_NO_EFFECT,APPLIED,PARTIAL_EFFECT, andEFFECT_UNKNOWN.APPLIED.B. Negative controls
PARTIAL_EFFECTor verified rollback; never false success.C. Initial OpenCLI acceptance fixture
Use the already-verified G0 Candidate as the first real fixture.
D. Downstream production acceptance
After host activation, independently prove through the actual consumer path:
/c/<conversation-id>;INTELLIGENCE_COMPLETEDwithoutcome_unknown=false;Current status / claim ceiling
Do not downgrade this issue to merely documenting the manual activation command. The desired closure is a reusable, bounded, auditable DevSpace host-activation primitive so future accepted Candidates do not end with “Owner must return to Mac Terminal and run one command.”