Skip to content

Fix cloud-provider model selectability; clean up stale docs - #90

Merged
mrhegemon merged 2 commits into
masterfrom
claude/ci-server-llm-testing-b0882e
Sep 28, 2026
Merged

mrhegemon merged 2 commits into
masterfrom
claude/ci-server-llm-testing-b0882e

Conversation

@mrhegemon

Copy link
Copy Markdown
Member

Summary

  • Fix: config-reconcile.cjs's syncCloudProviders registered CI_CLOUD_* providers (OpenAI, Anthropic, Google, GitHub Copilot) in models.providers, but never added them to agents.defaults.models — so a fully-configured cloud provider was registered but unselectable in the model picker. It now merges each active provider's resolved model into agents.defaults.models, mirroring the existing ci-hub/ollama sync, and prunes the entry when its Hub key disappears.
  • Fix (found while testing the above): the neighboring ci-hub/ollama merge rebuilt agents.defaults.models via filter-then-reinsert, which reorders keys — and therefore spuriously flags the config as changed — whenever other-prefixed keys (like the new cloud ones) are also present. Both merges now mutate the existing record in place instead, so a no-op reconcile stays a genuine no-op.
  • Docs cleanup: fixed a stale MIT license footer (actual license is PolyForm Noncommercial), a memory-endpoint description describing removed fallback behavior, a Sentry release-wording inaccuracy, a broken LICENSE.md link, a CREDITS.md section-numbering gap, an unqualified vLLM support claim, and added the undocumented test:agent-turn/check:ci-hub-plugin-drift commands to AGENTS.md/ANTIGRAVITY.md/CLAUDE.md (all three had drifted from package.json's actual scripts).

This came out of a background audit of the CI-Server connector, the CI-Hub runner plugin, and this LLM config-reconcile engine's test coverage — the cloud-provider gap was the best-scoped of three known P0s (confirmed still present from a prior full review) and the safest to land first since it's additive and doesn't touch auth.

Test plan

  • node --test tests/config-reconcile.test.mjs — 198/198 pass, including an extended idempotency check across two reconciles with mixed ci-hub/ollama/cloud keys
  • npm test (full unit + shell suite) — all green
  • npm run test:schema against the real openclaw CLI (Node 24) — 10/10 generated scenarios valid against OpenClaw's strict schema, including everything/hub-mcp
  • test:agent-turn — not run; needs Docker, unavailable in this environment

🤖 Generated with Claude Code

mrhegemon and others added 2 commits September 27, 2026 22:16
- README: correct the license footer (MIT -> PolyForm Noncommercial,
  matching LICENSE and docs/License-FAQ.md), fix the memory-write
  endpoint description to stop claiming a /note fallback that was
  removed, and note that vLLM is not actually implemented yet despite
  being mentioned as a local backend alongside Ollama.
- NOTICE.md: drop a dead LICENSE.md link (only LICENSE exists).
- CREDITS.md: fix a section-numbering gap (## 1 jumped to ## 3).
- docs/operations/error-reporting.md: SENTRY_RELEASE is already passed
  in docker-publish.yml; the "not wired up yet" note was stale.
- AGENTS.md/ANTIGRAVITY.md/CLAUDE.md: add the undocumented
  test:agent-turn and check:ci-hub-plugin-drift commands, which had
  drifted out of sync with package.json's actual scripts.

Found via a test-coverage and docs-staleness audit of the ci-server
connector, ci-hub runner plugin, and LLM config-reconcile engine.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
CI_CLOUD_* keys configured through Hub's AI cloud tokens were
registered in models.providers but never added to
agents.defaults.models, so a fully-configured cloud provider (OpenAI,
Anthropic, Google, GitHub Copilot) was invisible to the model picker.
syncCloudProviders now merges each active provider's resolved model
into agents.defaults.models the same way the ci-hub/ollama sync
already does, and prunes a provider's entry when its Hub key
disappears. It only creates the agents.defaults node when at least
one cloud provider is or was active, so a minimal config with no
creds still gains no empty nodes.

Also fixes a latent reordering bug in the neighboring ci-hub/ollama
merge: it rebuilt agents.defaults.models via filter-then-reinsert,
which re-appends ci-hub/ollama keys after any other-prefixed keys
that happened to precede them, flipping `changed` on an otherwise
idempotent reconcile. Both merges now mutate the existing record in
place instead, which was needed to make the cloud-provider fix above
idempotent in the (now common) case where local and cloud models
coexist.

Extended tests/config-reconcile.test.mjs to assert selectability, not
just registration, and to cover a provider's model key disappearing
when its Hub key is removed. node --test, npm test, and
test:schema (10/10 scenarios against the real openclaw schema) all
pass.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@mrhegemon
mrhegemon merged commit a45b562 into master Sep 28, 2026
4 checks passed
@mrhegemon
mrhegemon deleted the claude/ci-server-llm-testing-b0882e branch September 30, 2026 17:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant