Skip to content

Commit fd44b7f

Browse files
committed
fix: keep Grok adapter ready when registry unverified
1 parent 8cfbb42 commit fd44b7f

4 files changed

Lines changed: 36 additions & 8 deletions

File tree

‎scripts/lib/global-host-runtime-verifier.js‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -552,7 +552,6 @@ function verifyGlobalHostRuntime(options = {}) {
552552
probes.grokStatic = staticGrok
553553
issues.push(...staticGrok.issues)
554554
if (staticGrok.status === 'failed') contractStatus = 'failed'
555-
else if (staticGrok.status === 'unverified' && contractStatus === 'passed') contractStatus = 'unverified'
556555
}
557556

558557
const native = nativeVersionProbe(configurationHost.host, common)

‎scripts/test-global-host-config.js‎

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -451,10 +451,13 @@ assert(managedDriftRuntimeClaude.issues.some(issue =>
451451
assert.strictEqual(applyGlobalHostConfig({ packageRoot, env, home }).transaction.status, 'committed')
452452
const beforeGrokRegistration = inspectGlobalHostConfig({ packageRoot, env, home })
453453
assert.strictEqual(beforeGrokRegistration.ready, false)
454-
assert.strictEqual(
455-
beforeGrokRegistration.hosts.find(host => host.host === 'grok').contractStatus,
456-
'unverified'
457-
)
454+
const beforeGrokRegistrationHost = beforeGrokRegistration.hosts.find(host => host.host === 'grok')
455+
assert.strictEqual(beforeGrokRegistrationHost.adapterReady, true)
456+
assert.strictEqual(beforeGrokRegistrationHost.contractStatus, 'passed')
457+
assert.strictEqual(beforeGrokRegistrationHost.nativeStatus, 'unverified')
458+
assert(beforeGrokRegistrationHost.issues.some(issue =>
459+
issue.code === 'GROK_PLUGIN_REGISTRY_UNVERIFIED'
460+
))
458461
const grokTarget = targets.find(target => target.host === 'grok')
459462
const registryFile = path.join(grokTarget.root, 'installed-plugins', 'registry.json')
460463
fs.mkdirSync(path.dirname(registryFile), { recursive: true })

‎scripts/test-global-host-runtime-verifier.js‎

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,28 @@ assert.strictEqual(healthy.hosts.find(host => host.host === 'copilot').contractS
104104
assert.strictEqual(healthy.hosts.find(host => host.host === 'copilot').nativeStatus, 'unverified')
105105
assert.strictEqual(healthy.hosts.find(host => host.host === 'grok').nativeStatus, 'unverified')
106106

107+
const missingRegistryFile = path.join(grokRoot, 'installed-plugins', 'registry.json')
108+
const missingRegistryContent = fs.readFileSync(missingRegistryFile, 'utf8')
109+
fs.unlinkSync(missingRegistryFile)
110+
const missingGrokRegistry = verifyGlobalHostRuntime({
111+
configuration: {
112+
mode: 'GlobalOnlyHostConfigModeV1',
113+
workspaceCleanMode: 'GlobalOnlyWorkspaceCleanModeV1',
114+
packageVersion: 'test',
115+
hosts
116+
},
117+
env,
118+
home,
119+
fs,
120+
spawnSync: spawnProbe
121+
})
122+
const missingRegistryGrok = missingGrokRegistry.hosts.find(host => host.host === 'grok')
123+
assert.strictEqual(missingRegistryGrok.adapterReady, true)
124+
assert.strictEqual(missingRegistryGrok.contractStatus, 'passed')
125+
assert.strictEqual(missingRegistryGrok.nativeStatus, 'unverified')
126+
assert(missingRegistryGrok.issues.some(issue => issue.code === 'GROK_PLUGIN_REGISTRY_UNVERIFIED'))
127+
fs.writeFileSync(missingRegistryFile, missingRegistryContent, 'utf8')
128+
107129
const deepSpawn = (command, args) => {
108130
if (
109131
command === process.execPath &&

‎scripts/test-host-installation.js‎

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -755,7 +755,11 @@ console.log(`host installation tests passed selectors=5 dryRunWrites=0 collision
755755
const inspection = inspectGlobalHostConfig({ packageRoot: ROOT, env, home })
756756
assert.strictEqual(inspection.ready, false)
757757
assert.strictEqual(inspection.overallState, 'degraded')
758-
assert.strictEqual(inspection.hosts.find(host => host.host === 'grok').contractStatus, 'unverified')
758+
const grokInspection = inspection.hosts.find(host => host.host === 'grok')
759+
assert.strictEqual(grokInspection.adapterReady, true)
760+
assert.strictEqual(grokInspection.contractStatus, 'passed')
761+
assert.strictEqual(grokInspection.nativeStatus, 'unverified')
762+
assert(grokInspection.issues.some(issue => issue.code === 'GROK_PLUGIN_REGISTRY_UNVERIFIED'))
759763
assert.strictEqual(inspection.hosts.length, 5)
760764
assert.ok(fs.existsSync(path.join(home, 'gemini-cli-home', '.gemini', 'devcodex', 'global-host-receipt.json')))
761765
assert.ok(fs.existsSync(path.join(home, '.agents', 'devcodex', 'instructions.full.md')))
@@ -860,7 +864,7 @@ console.log(`host installation tests passed selectors=5 dryRunWrites=0 collision
860864
const statusAfterGlobalInstallFacts = JSON.parse(statusAfterGlobalInstall.stdout).payload
861865
assert.strictEqual(statusAfterGlobalInstallFacts.globalHostConfig.ready, false)
862866
assert.strictEqual(statusAfterGlobalInstallFacts.globalHostConfig.overallState, 'degraded')
863-
assert.strictEqual(statusAfterGlobalInstallFacts.entryFiles.instructionProjection.grokPlugin.globalAdapterReady, false)
867+
assert.strictEqual(statusAfterGlobalInstallFacts.entryFiles.instructionProjection.grokPlugin.globalAdapterReady, true)
864868
assert.strictEqual(statusAfterGlobalInstallFacts.entryFiles.instructionProjection.grokPlugin.workspaceSourceRequired, false)
865869
assert(!statusAfterGlobalInstallFacts.entryFiles.instructionProjection.issues.some(item =>
866870
item.code === 'HOST_GROK_WORKSPACE_PLUGIN_MISSING'
@@ -873,7 +877,7 @@ console.log(`host installation tests passed selectors=5 dryRunWrites=0 collision
873877
assert.strictEqual(doctorAfterGlobalInstall.status, 0, doctorAfterGlobalInstall.stderr || doctorAfterGlobalInstall.stdout)
874878
const doctorAfterGlobalInstallFacts = JSON.parse(doctorAfterGlobalInstall.stdout).payload
875879
assert.strictEqual(doctorAfterGlobalInstallFacts.globalHostConfig.ready, false)
876-
assert.strictEqual(doctorAfterGlobalInstallFacts.installArtifacts.instructionProjection.grokPlugin.globalAdapterReady, false)
880+
assert.strictEqual(doctorAfterGlobalInstallFacts.installArtifacts.instructionProjection.grokPlugin.globalAdapterReady, true)
877881
assert.strictEqual(doctorAfterGlobalInstallFacts.installArtifacts.instructionProjection.grokPlugin.workspaceSourceRequired, false)
878882
assert(!doctorAfterGlobalInstallFacts.installArtifacts.instructionProjection.issues.some(item =>
879883
item.code === 'HOST_GROK_WORKSPACE_PLUGIN_MISSING'

0 commit comments

Comments
 (0)