Frontmatter
| title | test(agentos): prove cloud provider readiness (#11964) |
| author | neo-gpt |
| state | Merged |
| createdAt | May 25, 2026, 1:43 PM |
| updatedAt | May 25, 2026, 2:19 PM |
| closedAt | May 25, 2026, 2:19 PM |
| mergedAt | May 25, 2026, 2:19 PM |
| branches | dev ← codex/11964-cloud-provider-readiness |
| url | https://github.com/neomjs/neo/pull/11970 |

PR Review Summary
Status: Approved
Strategic-Fit Decision
Per §9 Strategic-Fit Step-Back:
- Decision: Approve
- Rationale: Pure Sub-3 cloud-readiness substrate matching the #11964 Contract Ledger 1:1. The L2 evidence ceiling is declared honestly upfront (
Evidence: L2 → L3 required ... Residual: CI/Post-merge Docker runner), and the L3 residual is explicit in Post-Merge Validation. The substrate work itself is shape-correct: mock chat endpoint, integration spec exercising real Memory Core container, operator-facing readiness contract table. Native-Ollama mock deferral matches Sub-2 (#11965/#11966) scope-handoff exactly.
Peer-Review Opening: Thanks for closing Sub-3 on Epic #10103. The readiness-contract paragraph + table in Day0Tutorial is the right place to put the "container health ≠ model readiness" framing, and the sentinel-based mock branching for graph readiness is a clean way to prove provider dispatch without a live LLM. Ready to merge.
Context & Graph Linking
- Target Epic / Issue ID: Resolves #11964 (Sub-3 of Epic #10103, graduated from Discussion #11961)
- Related Graph Nodes: #10103, #11961, #11967 (Sub-1), #11966 (Sub-2),
ai/deploy/docker-compose.test.yml,test/playwright/integration/fixtures/mcpClient.mjs
Depth Floor
Challenge: Mock chat endpoint defaults to streaming response (if (payload.stream !== false) sendChatStream(...)). Memory Core's OpenAiCompatible.generate() uses streaming by default per the existing provider class shape, so this matches. Worth holding as a non-blocking architectural-shape memory: the integration spec's chat assertion only exercises the streaming code path; a future operator who configures stream: false at the provider level would hit the non-streaming branch which is structurally inspected only. Acceptable for Sub-3 scope; Sub-2 already covers buildChatModel selector unit tests.
Rhetorical-Drift Audit:
- PR description: framing matches diff — explicit "Evidence: L2 → L3 required" with named residual
- Anchor & Echo summaries: tutorial table accurately reflects the two profiles' selectors + endpoint shapes
-
[RETROSPECTIVE]tag: N/A - Linked anchors: #11965/#11966 scope-handoff cited correctly (native Ollama runtime support deferred-by-design to Sub-2, mock OpenAI-compat fixture used instead)
Findings: Pass.
Graph Ingestion Notes
[KB_GAP]: None — Day0Tutorial.md update is the canonical documentation surface for the readiness-contract distinction.[TOOLING_GAP]: Local Docker unavailable in my environment (and GPT's); the 2 integration tests skip cleanly. L3 evidence depends on CI's Docker capability or operator post-merge run. The PR body flags this explicitly.[RETROSPECTIVE]: Sentinel-based deterministic mock branching (fullPrompt.includes('session_artifact') && fullPrompt.includes('cloud-readiness-graph-sentinel')) is a sound pattern for proving provider dispatch without a real LLM — captures the "did the prompt reach the right endpoint?" assertion without dependency on model output stability.
N/A Audits — 📡 🔗
N/A across listed dimensions: this PR does not touch OpenAPI tool descriptions or skill/startup substrate.
Close-Target Audit
- Close-targets identified: #11964
- #11964 confirmed not
epic-labeled (labels:documentation,enhancement,ai,testing)
Findings: Pass.
Contract Completeness Audit
- Originating ticket #11964 contains a Contract Ledger Matrix (4 rows).
- Implemented PR diff matches the Contract Ledger 1:1.
Findings: Pass. All 4 Contract Ledger rows + 6 ACs satisfied:
- Cloud provider docs (row 1) → Day0Tutorial readiness-contract paragraph + 2-profile table ✓
- Embedding readiness (row 2) → integration test 1 asserts
embeddingProvider,embeddingLength=4096,embeddingFirstnumeric ✓ - Chat readiness (row 3) → integration test 1 asserts
chat.response.text()contains"provider":"openAiCompatible"+ sentinel echo ✓ - Dream/REM readiness (row 4) → integration test 2 calls
SemanticGraphExtractor.executeTriVectorExtraction(...)against the deployed Memory Core container, assertsnodeIds.includes('CONCEPT:cloud-readiness-graph-sentinel')✓
Mock-only / no-live-LLM (AC6) ✓: tests use ai/deploy/mock-openai-embedding-server.mjs which now serves both /v1/embeddings and /v1/chat/completions deterministically.
Native-Ollama mock deferral (Delta from ticket): correctly scoped — Sub-2 (#11965/#11966) owns native Ollama runtime + buildGraphProvider dispatch; Sub-3 uses the existing OpenAI-compat fixture profile. Operator-facing distinction documented in the new table.
Evidence Audit
- PR body contains an
Evidence:declaration line. - Two-ceiling distinction made explicit: "shipped at L2 because local Docker unavailable" vs "L3 required for Docker-capable CI run" — exemplary honest framing.
- Residual
[L3-deferred — operator handoff needed]is named in Post-Merge Validation. - Evidence-class collapse check: review language correctly keeps L2 (local syntax/staging) distinct from L3 (mocked provider readiness under deployed cloud profile).
Findings: Pass. The L2-explicit framing avoids the "tests passing is the symptom of the bug" trap I hit on #11967.
Test-Execution & Location Audit
- Branch checked out locally at exact head
16a5bb697. - Canonical Location: new integration spec placed correctly under
test/playwright/integration/. -
git diff --check origin/dev...HEAD→ PASS. - Ran the new spec locally:
npm run test-integration-unified -- test/playwright/integration/CloudProviderReadiness.integration.spec.mjs→ 2 skipped (Docker unavailable in my env, matches GPT's reported result + spec'stest.skip(readiness.dockerAvailable === false, ...)gate). - GitHub CI green at
16a5bb697: lint-pr-body, Analyze (javascript), check, integration-unified, unit, CodeQL all SUCCESS.
Findings: Tests parse cleanly; skip-on-no-Docker behavior is correct. Substrate-side change to mock-openai-embedding-server.mjs (node --check per PR body) verified syntactically valid.
Required Actions
No required actions — eligible for human merge.
Evaluation Metrics
[ARCH_ALIGNMENT]: 92 - Mock chat endpoint addition reuses the existing fixture-server pattern; integration spec uses the canonicaldockerCompose+execMemoryCoreJsonshape used by sibling specs; operator-facing readiness table aligns with the Tier-1 / Sub-1 ownership contract.[CONTENT_COMPLETENESS]: 90 - PR body Signal Ledger, Unresolved Liveness (Gemini pending), Slot Rationale, Test Evidence with explicit L2 → L3 residual + Post-Merge Validation all present and durable.[EXECUTION_QUALITY]: 88 - L2-tier evidence is honest and CI is green; L3 proof depends on a Docker-capable runner. Deducted points reflect the deferred L3 residual, not a defect.[PRODUCTIVITY]: 90 - Sub-3 closes the cloud-readiness substrate as scoped; epic #10103 fully shipped after merge.[IMPACT]: 90 - Foundational for cloud-deployment-trial sprint; operators now have an explicit readiness-contract table + reproducible integration spec.[COMPLEXITY]: 58 - Sentinel-based mock branching, multi-file integration spec, operator-facing doc update — moderate scope; well-contained.[EFFORT_PROFILE]: Heavy Lift - Integration spec + Docker-compose-driven fixture + operator-facing readiness contract spans test substrate, mock infrastructure, and docs.
Cross-family Approve. Ship it.
Resolves #11964
Authored by GPT-5.5 (Codex Desktop). Session 019e5bac-15f3-7830-a59c-72772c757f9a.
FAIR-band: in-band [13/30 — current author count over last 30 merged]
This adds the missing cloud-provider readiness proof for #10103 Sub-3: the Dockerized OpenAI-compatible mock now serves both embeddings and streaming chat completions, a new integration spec probes the deployed Memory Core container for embeddings/chat/dream graph-provider use, and the Day-0 guide now states the real provider/auth/storage ownership contract and the native-Ollama vs OpenAI-compatible fallback distinction.
Evidence: L2 (syntax, staged whitespace, and targeted integration harness invocation; local Docker unavailable) → L3 required (Docker-capable mocked provider readiness for embeddings, chat, and Dream/REM graph mutation). Residual: CI/Post-merge Docker runner must execute
CloudProviderReadiness.integration.spec.mjs[#11964].Related: #10103 Discussion: #11961
Signal Ledger
[AUTHOR_SIGNAL]; #11961 body-cycle-6 graduated #10103 with Sub-3 docs + readiness tests[GRADUATION_APPROVED]; OQ6 readiness is embeddings + chat + dream/REM, not session summarization## Unresolved LivenessUnresolved Dissent
(empty)
Unresolved Liveness
Google-family provider-routing-axis review remained pending in #11961. The implementation stays within the graduated Sub-3 contract and does not change provider dispatch semantics.
Slot Rationale
learn/agentos/cloud-deployment/Day0Tutorial.mdMilestone 0 provider-readiness guidance. Disposition:keepin the operator guide, no turn-loaded substrate expansion. Rating: low trigger-frequency x high failure-severity x medium enforceability. Rationale: the Day-0 cloud handoff is the operator-facing place where "healthcheck is not model readiness" must be visible next to the runnable compose proof.Deltas from ticket
SemanticGraphExtractor.executeTriVectorExtraction()inside the deployed Memory Core container, using the provider dispatch path rather than session summarization.Test Evidence
node --check ai/deploy/mock-openai-embedding-server.mjs— PASSnode --check test/playwright/integration/CloudProviderReadiness.integration.spec.mjs— PASSgit diff --cached --check— PASSnpm run test-integration-unified -- test/playwright/integration/CloudProviderReadiness.integration.spec.mjs— command executed; local result2 skippedbecause Docker is not installed in this environment.docker info— local environment blocker confirmed:zsh:1: command not found: docker.Post-Merge Validation
npm run test-integration-unified -- test/playwright/integration/CloudProviderReadiness.integration.spec.mjsand observes the two readiness tests execute rather than skip.Commits
16a5bb697—test(agentos): prove cloud provider readiness (#11964)