Frontmatter
| title | >- |
| author | neo-opus-ada |
| state | Merged |
| createdAt | May 28, 2026, 8:47 AM |
| updatedAt | May 28, 2026, 9:37 AM |
| closedAt | May 28, 2026, 9:37 AM |
| mergedAt | May 28, 2026, 9:37 AM |
| branches | dev ← agent/12094-cross-repo-env-var-docs |
| url | https://github.com/neomjs/neo/pull/12129 |

PR Review Summary
Status: Approved
🪜 Strategic-Fit Decision
Per §9 Strategic-Fit Step-Back:
- Decision: Approve
- Rationale: Docs-only PR that closes the Neo-side #12094 visibility gap without touching runtime config. The AC2 deviation is evidence-backed: the MCP env-var audit is scoped to
ai/mcp/server/**, while the three readiness vars are orchestrator-scoped.
Peer-Review Opening: This is the right small correction for the deployment friction: it documents the operator-facing env vars where cloud deployers will look, and keeps the downstream repo work explicitly out of this PR.
🕸️ Context & Graph Linking
- Target Epic / Issue ID: Refs #12094
- Related Graph Nodes: PR #12092 provider-readiness env vars; PR #12093 provider
keep_aliveenv vars; #12089 AC10 external operator validation residual.
🔬 Depth Floor
Challenge OR documented search (per guide §7.1):
Documented search: I actively looked for env-var scope drift, commercial-partner naming leakage, and stale close-target semantics. I found no blockers.
Rhetorical-Drift Audit (per guide §7.4):
- PR description: framing matches a docs-only Neo-side update;
Refs #12094correctly leaves downstream AC3/AC4 open. - Anchor & Echo summaries: no new source JSDoc or runtime docs beyond
Configuration.mdprose. -
[RETROSPECTIVE]tag: N/A; none used. - Linked anchors: #12092/#12093 establish the five env vars the PR documents.
Findings: Pass.
🧠 Graph Ingestion Notes
[KB_GAP]: Prior cloud-deployment docs had zero hits for the five newly introduced vars; this PR closes that Neo-side discoverability gap.[TOOLING_GAP]: None.[RETROSPECTIVE]: The AC2 scope correction is the useful pattern here: keep the MCP-server env-var audit scoped toai/mcp/server/**and document orchestrator-only vars in deployment configuration docs instead of polluting an audit table outside its declared substrate.
🎯 Close-Target Audit
- Close-targets identified: none. PR uses
Refs #12094, not a magic close keyword.
Findings: N/A — no auto-close surface.
📑 Contract Completeness Audit
- No new runtime/config/CLI contract is introduced by this PR.
- The documented vars already exist in code from #12092/#12093.
Findings: Pass for docs-only scope.
🪜 Evidence Audit
- PR body contains an
Evidence:declaration line. - L1 static-doc evidence is appropriate for a docs-only change.
- Residual downstream AC3/AC4 is explicitly listed and #12094 remains open via
Refs.
Findings: Pass.
📡 MCP-Tool-Description Budget Audit
Findings: N/A — no ai/mcp/server/*/openapi.yaml changes.
🔗 Cross-Skill Integration Audit
Findings: N/A — no new workflow primitive, skill, MCP tool, or wire-format convention.
🧪 Test-Execution & Location Audit
- Branch checked out locally via
checkout_pull_request. - Canonical Location: docs-only change in
learn/agentos/cloud-deployment/Configuration.md; no test file placement involved. - No unit test required for docs-only scope.
- Current CI verified green: Analyze, CodeQL, integration-unified, lint-pr-body, and unit all pass.
Findings: Pass. Related local verification was grep/source audit rather than tests: all five vars are present in the new section; origin/dev had zero hits for them in Configuration.md; readiness vars have zero ai/mcp/server/** reads and do flow through ai/config.template.mjs into orchestrator readiness code.
📋 Required Actions
No required actions — eligible for human merge.
📊 Evaluation Metrics
[ARCH_ALIGNMENT]: 100 - I actively considered docs placement, audit-scope preservation, downstream residual handling, and close-target semantics; all align with the existing cloud-deployment docs split.[CONTENT_COMPLETENESS]: 100 - I verified the PR body names the five vars, defaults, scope correction, residual downstream ACs, evidence class, and commit provenance.[EXECUTION_QUALITY]: 100 - Docs-only diff is narrow, CI is green, and source searches support the AC2 correction andkeep_aliveinteraction framing.[PRODUCTIVITY]: 100 - Fully completes Neo-side AC1 and resolves AC2 by verified scope correction while preserving AC3/AC4 for downstream work.[IMPACT]: 45 - Moderate operator-facing deployment value: prevents env-var invisibility and resident-model tuning confusion, but no runtime path changes.[COMPLEXITY]: 15 - Low: one documentation file, 30 added lines, no code/test/schema changes.[EFFORT_PROFILE]: Quick Win - Small docs delta with clear deployment-operator payoff.
Approved per cross-family mandate. Human-only merge gate still applies; no agent merge action.
Refs #12094
Authored by Claude Opus 4.7 1M (Claude Code). Session
d84680be-4fdb-4b5d-9fe8-e83dad71dfbe.FAIR-band: nightshift-exempt per operator directive (2026-05-28 ~00:58Z: "FAIR bands do not apply for nightshifts").
Documents the 5 deployment env vars introduced by PR #12092 (orchestrator provider-readiness probe) + PR #12093 (provider
keep_alivedefaults), which shipped without cloud-deployment docs —Configuration.mdhad zero hits for any of them.Evidence: L1 (static doc content — greppable presence of all 5 vars + the interaction note + scope-boundary explanation). No runtime ACs. No residuals on the Neo side.
What shipped (Neo-side, AC1)
New "Model-provider runtime + orchestrator-readiness" section in
learn/agentos/cloud-deployment/Configuration.md:NEO_OLLAMA_KEEP_ALIVE+NEO_OPENAI_COMPATIBLE_KEEP_ALIVE(default-1/resident; per-request override semantics)OLLAMA_KEEP_ALIVEvs NeoNEO_OLLAMA_KEEP_ALIVEinteraction — the key operator friction: native-keep_alive shortening has no effect on Neo traffic unlessNEO_OLLAMA_KEEP_ALIVEis also shortened (Neo sends its per-request-1on every call, overriding the server default).NEO_ORCHESTRATOR_PROVIDER_READY_ATTEMPTS/DELAY_MS/TIMEOUT_MS(defaults30/1000/3000; readiness-probe tuning).Deltas from ticket — AC2 scope-correction
#12094 AC2 planned to backfill the 3
PROVIDER_READY_*vars intoConfigSubstrateEnvVarAudit.md. V-B-A deviation: that audit explicitly scopes toai/mcp/server/**env reads (its Scope section), and the PROVIDER_READY vars have zero reads underai/mcp/server/**— they're orchestrator-daemon-scoped (ai/config.template.mjsorchestrator.providerReadiness→ai/daemons/orchestrator/*+ai/services/graph/ProviderReadinessHelper.mjs). Backfilling them would violate the audit's stated scope. The 2 keep_alive vars correctly remain in the audit (read by the memory-core MCP server atai/mcp/server/memory-core/config.template.mjs:459/469). The new Configuration.md section documents this scope boundary inline rather than polluting the MCP-server audit. AC2 is satisfied-by-correction: the audit doc is already correct for its scope; no change needed.Residual (out of this PR — downstream repo)
AC3/AC4 (downstream-deployment
.env.examplecommented examples +README.mdoperator-tuning section) are explicitly a separate MR in the downstream-deployment repo per the ticket. UsingRefs #12094(notResolves) so the ticket stays open until the downstream-side lands. Neo-side capability framing only; no commercial-partner names.Test Evidence
Docs-only — no tests required (per
pr-review-guide §7.5). Verification:grep -cfor all 5 vars inConfiguration.md: was 0 → now 5 present.grepconfirmed PROVIDER_READY vars have zeroai/mcp/server/**reads (AC2 scope basis).Post-Merge Validation
.env.example+README.mdupdated in the downstream repo (AC3/AC4) — then close #12094.Commits
8c8decc4e— docs(cloud-deployment): document provider keep_alive + orchestrator-readiness env vars (#12094)