You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
AgentHarness: phaseToCondition should fall back to status.conditions when phase=UNSPECIFIED #1958
phaseToCondition in translate.go switches on sb.GetPhase() to derive the AgentHarness Ready condition. When the OpenShell gateway returns phase=UNSPECIFIED (or omits the field entirely — see NVIDIA/OpenShell#1710), the controller permanently sets Ready=Unknown / reason=SandboxPhaseUnknown and requeues every 10 s, even though status.conditions[Ready=True] is present in the same response.
Gateway returns full status.conditions[{type:Ready, status:True}] but no phase field
Controller logs: reason=SandboxPhaseUnknown on every reconcile loop (every 10 s via agentHarnessNotReadyRequeue)
AgentHarness never reaches Ready=True despite sandbox pod running and supervisor connected
Expected behaviour
When phase is UNSPECIFIED (or missing from the wire response), the controller should inspect status.conditions as a fallback rather than immediately giving up.
Proposed fix
caseopenshellv1.SandboxPhase_SANDBOX_PHASE_UNKNOWN, openshellv1.SandboxPhase_SANDBOX_PHASE_UNSPECIFIED:
// Gateway may omit the phase field (see NVIDIA/OpenShell#1710).// Fall back to status.conditions so an older gateway binary does not// permanently block AgentHarness readiness.for_, c:=rangesb.GetStatus().GetConditions() {
ifc.GetType() =="Ready"&&c.GetStatus() =="True" {
returnmetav1.ConditionTrue, "SandboxReady", msg
}
}
returnmetav1.ConditionUnknown, "SandboxPhaseUnknown", msg
Evidence
# grpcurl GetSandbox — phase field absent, conditions show Ready=True
fields returned: ['metadata', 'spec', 'status']
phase present: False
status.conditions[0]: {type: Ready, status: True, reason: DependenciesReady, message: Pod is Ready; Service Exists}
So as a project we have actually decided to use substrate as the core sandboxing technology. This full switchover should be done soon, and the openshell code will be removed. Once that goes in we should retest this issue, but it should be fixed. The initial support is in, but we will be adding deeper integration for simpler chat us hopefully this week.
Activity
christensenjairus commentedon Jun 8, 2026
I believe the last 'compatible' version of openshell here is 0.0.51. I ran into this yesterday and downgrading fixed the status issue.
EItanya commentedon Jun 15, 2026
So as a project we have actually decided to use
substrateas the core sandboxing technology. This full switchover should be done soon, and the openshell code will be removed. Once that goes in we should retest this issue, but it should be fixed. The initial support is in, but we will be adding deeper integration for simpler chat us hopefully this week.docs(fork): record the 2026-10-24 upstream run on six carried rows (#907