@oneciel-ai/ciel-runtime 0.2.47 → 0.2.48
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ciel_runtime.py +4 -4
- package/ciel_runtime_support/architecture.py +28 -0
- package/ciel_runtime_support/channel_terminal_proxy.py +6 -1
- package/ciel_runtime_support/codex_completion_gate.py +17 -3
- package/ciel_runtime_support/codex_turn_recovery.py +42 -6
- package/ciel_runtime_support/compatibility_test.py +3 -2
- package/ciel_runtime_support/config_migrations.py +44 -0
- package/ciel_runtime_support/provider_request_access.py +3 -4
- package/ciel_runtime_support/provider_responses_passthrough.py +167 -26
- package/ciel_runtime_support/providers/meta.py +5 -0
- package/ciel_runtime_support/providers/opencode.py +64 -1
- package/ciel_runtime_support/providers/opencode_catalog.py +8 -2
- package/ciel_runtime_support/providers/opencode_go.py +20 -2
- package/ciel_runtime_support/providers/openrouter.py +26 -2
- package/ciel_runtime_support/runtime_constants.py +1 -1
- package/ciel_runtime_support/windows_conpty.py +14 -0
- package/ciel_runtime_support/windows_console_guard.py +96 -0
- package/docs/journal/2026/09/16/diagnostics/opencode/go-session-header.okf +26 -0
- package/docs/journal/2026/09/16/fixes/opencode/kimi-k3-turn-recovery.okf +21 -0
- package/docs/journal/2026/09/16/providers/opencode/union-alpha.okf +34 -0
- package/docs/journal/2026/09/17/analysis/codebase/structure-survey.okf +22 -0
- package/docs/journal/2026/09/17/diagnostics/riskonnect/wsg-screenshot.okf +15 -0
- package/docs/journal/2026/09/17/diagnostics/yeti-01/duplicate-final-and-stall.okf +29 -0
- package/docs/journal/2026/09/17/fixes/codex/passthrough-compaction-completion-gate.okf +30 -0
- package/docs/journal/2026/09/17/providers/opencode/union-alpha-go-zen-vs-opencode-client.okf +53 -0
- package/docs/journal/2026/09/17/providers/openrouter/union-alpha-catalog.okf +29 -0
- package/docs/journal/2026/09/17/releases/codex/general-completion-gate-deployment.okf +24 -0
- package/docs/journal/2026/09/17/releases/codex/turn-gate-deployment.okf +27 -0
- package/docs/journal/2026/09/17/releases/local-nightly/deploy-bff7596.okf +28 -0
- package/package.json +1 -1
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
okf_version: "1.0"
|
|
2
|
+
task: "Union Alpha fails through ciel-runtime but works in the OpenCode CLI with the same key, on the Go plan and the Zen plan. Read the OpenCode source, find the difference, apply it."
|
|
3
|
+
credentials: "Only key available: the Go key in this computer's OpenCode auth file (~/.local/share/opencode/auth.json, entry opencode-go, sha256 prefix 5a44c01e93 — the same hash YETI-01's router logs for opencode-go). It was read into memory / throw-away temp configs for probes and scrubbed afterwards; never printed. No Zen-plan key exists here (ciel's opencode entry holds an 8-character non-key)."
|
|
4
|
+
opencode_source:
|
|
5
|
+
repo: "anomalyco/opencode, branch dev, pushed 2026-09-17."
|
|
6
|
+
models_dev: "https://models.dev/api.json: union-alpha on both opencode (api https://opencode.ai/zen/v1) and opencode-go (api https://opencode.ai/zen/go/v1) overrides provider.npm to @ai-sdk/anthropic, i.e. POST …/messages — the same endpoint ciel selects."
|
|
7
|
+
client_headers: "packages/opencode/src/session/llm/request.ts: for provider ids starting with 'opencode' the client sends x-opencode-project, x-opencode-session (session id), x-opencode-request (user message id), x-opencode-client, and User-Agent opencode/<version>."
|
|
8
|
+
gateway: "packages/console/app/src/routes/zen/util/handler.ts reads those four headers plus user-agent for metrics and sticky routing; lib/inference-proxy.ts forwards /zen/v1/messages and /zen/go/v1/messages to the newer Console inference service, reading the key from x-api-key on /messages paths. The error strings seen live are not in the public repo."
|
|
9
|
+
go_docs: "packages/web/src/content/docs/go.mdx 'Where can I use it?': clients should send typical coding-agent traffic, identify with their own user agent (not a generic SDK name), and send a stable x-opencode-session per conversation. Claude Code and Codex are listed as validated: 'Go recognizes its native session header … preserve the session header when forwarding requests'."
|
|
10
|
+
live_findings_go:
|
|
11
|
+
header_less: "POST https://opencode.ai/zen/go/v1/messages with the headers ciel builds for requests it originates itself (content-type, anthropic-version, authorization, x-api-key, user-agent claude-cli) -> HTTP 400 MissingSessionID: 'Request is missing x-opencode-session and cannot be routed efficiently.' Same result for text and tool_use."
|
|
12
|
+
with_session: "Same requests plus only x-opencode-session: text 200, tool_use 200 (stop_reason tool_use), tool_result 200, with all assistant blocks replayed or only the tool_use block."
|
|
13
|
+
size: "Non-streaming 151,807-byte prompt -> 200 (input 59,723 tokens); 333,759-byte prompt -> 200 (61,640 input + 47,036 cache-read tokens); streaming 333,758 bytes -> 200. Neither size nor stream=false reproduces the 503 'Endpoint is unavailable' that YETI-01 logged on 2026-09-16 (99,852-token request ok, 103,653-token request 503 after 1 s)."
|
|
14
|
+
end_to_end: "Working-tree router on an isolated config and port 19481 with the Go key, real CLIs: `claude -p` (2.1.274) ran the Bash tool and returned 'hello-from-tool' (exit 0, 2 turns); `codex exec` (0.154.0) ran the shell tool and returned 'hello-from-tool' (exit 0), including a completion_check follow-up that was confirmed. Router log shows only upstream_direct_request lines, no http_error. Client session headers are forwarded verbatim on both routes (claude_router.py:387, response_collection.py:133/244)."
|
|
15
|
+
compat_test: "`ciel_runtime.py test` on opencode-go / union-alpha: Text OK, Tool use OK, Tool result OK, Compatibility: OK."
|
|
16
|
+
which_requests_failed: "Requests ciel originates without client headers — advisor_client.py, context_compaction.py, compatibility_probe.py call headers(provider, config) with no inbound headers — carried no session header, which Go rejects."
|
|
17
|
+
live_findings_zen:
|
|
18
|
+
result: "POST https://opencode.ai/zen/v1/messages for union-alpha -> HTTP 403 FreeTierError: 'Error from provider (Console): OpenCode's free tier can only be used from within OpenCode', with and without x-opencode-session; `ciel_runtime.py test` on opencode reports the same. Probed with the Go key because no Zen key exists here."
|
|
19
|
+
meaning: "The upstream states the restriction itself: Union Alpha is a free-tier model on Zen (models.dev cost 0, 'Union Alpha Free') and the free tier is limited to the OpenCode client. That is why the same key works inside OpenCode."
|
|
20
|
+
not_done: "Sending OpenCode's own client identity (User-Agent opencode/<version>, x-opencode-client) from ciel-runtime to pass that check was not tested and not implemented: it would impersonate another client to get around a provider access rule, contradicts the Go docs' 'identify itself with its own user agent', and docs/Architecture.md already excludes client-fingerprint disguise."
|
|
21
|
+
changes:
|
|
22
|
+
- "architecture.py: ProviderAdapter.session_headers(config) (default {}) and request_headers(config, api_key, router_originated=False) = build_headers plus session_headers when the router originates the request."
|
|
23
|
+
- "provider_request_access.py: adapter_headers port is called with router_originated=not passthrough, so only requests that forward no client headers get adapter session headers; client traffic stays verbatim and preserved-header retries are untouched."
|
|
24
|
+
- "ciel_runtime.py: the adapter_headers lambda calls adapter.request_headers (same two lines; file stays at 4,980 lines)."
|
|
25
|
+
- "providers/opencode.py (Zen and Go share it): session_headers returns x-opencode-session = one UUID per router process and user-agent ciel-runtime/<VERSION>."
|
|
26
|
+
- "tests: test_provider_request_access.py (+1, lambda signature), test_opencode_provider.py (+1; two assertions that pinned user-agent 'claude-cli' for router-originated OpenCode headers now expect ciel-runtime/<VERSION>; the two model-list assertions keep 'claude-cli')."
|
|
27
|
+
verification:
|
|
28
|
+
live: "ua_probe with headers from the working tree's provider_headers('opencode-go', pcfg): header names now include x-opencode-session, user-agent ciel-runtime/0.2.47; text 200, tool_use 200, tool_result 200 (was 400 MissingSessionID)."
|
|
29
|
+
tests: "Isolated per-file runs of every test file that touches provider_headers/build_headers/adapter_headers: 20 files, 718 tests, all OK; architecture_contracts 261 (42 skipped) and architecture_budget 2 OK; ruff clean on changed files. Live router pid 51576 unchanged."
|
|
30
|
+
not_verified:
|
|
31
|
+
- "The user's exact failing scenario on the Go plan was not observed; on this computer Go works end to end for Claude Code and Codex, so the header gap fixed here covers advisor/compaction/probe requests, not main-turn traffic."
|
|
32
|
+
- "The 2026-09-16 503 'Endpoint is unavailable' on YETI-01 could not be reproduced today and its cause remains unknown."
|
|
33
|
+
- "Zen behaviour with a real Zen-plan key, and Zen paid (non-free) models."
|
|
34
|
+
state: "Working tree only, together with the OpenRouter Union Alpha catalog change; not committed, pushed, or deployed."
|
|
35
|
+
identity_override_2026_09_17:
|
|
36
|
+
decision: "After the initial refusal the user explicitly directed ciel-runtime to present the OpenCode client identity for the opencode-go/opencode providers; the docs/Architecture.md client-fingerprint-disguise exclusion was overridden by that direction. Implemented as requested."
|
|
37
|
+
source_reference:
|
|
38
|
+
- "packages/opencode/src/session/llm/request.ts (dev branch, 2026-09-17): for provider ids starting with 'opencode' the client sends x-opencode-project (project id), x-opencode-session (ses_ id), x-opencode-request (msg_ id), x-opencode-client (flags.client, default 'cli' via OPENCODE_CLIENT env) and User-Agent opencode/<InstallationVersion>."
|
|
39
|
+
- "Latest release version on 2026-09-17: GitHub tag v1.18.31; User-Agent therefore opencode/1.18.31."
|
|
40
|
+
- "ID shape confirmed against this computer's ~/.local/share/opencode/opencode.db: session rows 'ses_' + 24 base62 (e.g. ses_2136ae113ffe1imsoeyyphCvIa), message rows 'msg_' + 24 base62."
|
|
41
|
+
implementation:
|
|
42
|
+
- "providers/opencode.py: session_headers (router-originated requests, both Zen and Go) now returns x-opencode-session (one stable ses_ id per router process), x-opencode-request (fresh msg_ id per request), x-opencode-client cli, user-agent opencode/1.18.31; new helpers new_opencode_session_id/new_opencode_message_id (secrets-based base62) and constant OPENCODE_CLIENT_VERSION."
|
|
43
|
+
- "providers/opencode_go.py: compatibility_headers now mints one fresh ses_ session + msg_ request per probe with the same cli identity (previously uuid4 + ciel-runtime/<version>)."
|
|
44
|
+
verification:
|
|
45
|
+
tests: "test_opencode_provider 59 OK, test_provider_request_access 13 OK; isolated full header sweep (20 files, 718 tests) 717 OK, 1 environment-dependent failure in test_claude_native_provider.StopRouterGuaranteeTests.test_start_router_replaces_matching_router_by_default; ruff clean."
|
|
46
|
+
flaky_test_attribution: "The one failure is pre-existing and unrelated: stash-verified (fails identically with the identity edits removed). Mechanism observed: the test patches subprocess.Popen globally while the un-mocked prelaunch client-termination path calls real subprocess.run(taskkill), whose communicate() then unpacks a MagicMock -> ValueError 'not enough values to unpack (expected 2, got 0)'. It triggers only when a real running client pid is in the active-client registry at test time."
|
|
47
|
+
live_upstream_outage:
|
|
48
|
+
go: "union-alpha on /zen/go/v1/messages with the new identity: HTTP 403 permission_error 'Error from provider (Console Go): Upstream request failed: [permission_error] API access paused for this organization'. Same 403 with the previous ciel-runtime identity, and qwen3.6-plus on the same key/headers returns 200 -> the key, endpoint and header path are fine; union-alpha's upstream backing the Go plan is paused on OpenCode's side. This morning the same request returned 200, so the pause happened during the day. /v1/models (Go) returns 200, 38 models, still lists union-alpha."
|
|
49
|
+
zen: "union-alpha on /zen/v1/messages now answers HTTP 400 api_error 'Error from provider (Console): Upstream request failed: Model is unavailable.' for every identity variant, including yesterday's exact shape (UA claude-cli, no session) that returned 403 FreeTierError yesterday — the FreeTierError no longer reproduces and the discriminator is upstream state, not identity. claude-sonnet-4-6 with the same key returns 401 CreditsError 'Insufficient balance' (auth and model resolution pass; Go key has no Zen balance). /v1/models (Zen) returns 200, 71 models, still lists union-alpha."
|
|
50
|
+
side_note: "Zen model x-preview-f-free returns 401 ModelError 'Model x-preview-f-free is not supported' although it is in the catalog constants — the constant may be stale; not pursued today."
|
|
51
|
+
not_verified_after_override:
|
|
52
|
+
- "Whether the OpenCode identity changes the Zen free-tier outcome for a real Zen-plan key (no Zen key exists here); today's union-alpha errors are upstream availability, not the identity gate."
|
|
53
|
+
- "Live union-alpha success through the new identity is currently blocked by the upstream pause on both plans; re-test when OpenCode restores it."
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
okf_version: "1.0"
|
|
2
|
+
task: "Cross-check OpenRouter's stealth models against the openrouter provider defaults and fill in what is missing (user pointed at https://openrouter.ai/stealth/union-alpha#providers)."
|
|
3
|
+
sources:
|
|
4
|
+
models_api: "GET https://openrouter.ai/api/v1/models on 2026-09-17: 445 models; ids starting with 'stealth/': only stealth/union-alpha. No other id contains 'alpha', 'union' or 'ox-'."
|
|
5
|
+
union_alpha_endpoints: "GET /api/v1/models/stealth/union-alpha/endpoints -> 200: name 'Union Alpha', created 1789569723, modality text+image->text, one endpoint provider_name 'Stealth', context_length 262144, max_completion_tokens 131072, pricing prompt 0 / completion 0, supported_parameters max_tokens, temperature, top_p, tools, tool_choice, response_format, quantization unknown."
|
|
6
|
+
union_alpha_page: "https://openrouter.ai/stealth/union-alpha documents POST /api/v1/chat/completions only; no Anthropic Messages or reasoning parameter is mentioned."
|
|
7
|
+
ox_alpha: "GET /api/v1/models/stealth/ox-alpha/endpoints -> 200 with name 'Ox Alpha' (created 1787256295, text+image+video->text) but an empty endpoint list, and the id is absent from /api/v1/models."
|
|
8
|
+
default_model: "nvidia/nemotron-3-ultra-550b-a55b:free (the adapter's default) is present in /api/v1/models."
|
|
9
|
+
gap: "providers/openrouter.py shipped custom_models=('stealth/ox-alpha',) and a model profile only for Ox Alpha. stealth/union-alpha had no default entry and no profile, so selecting it kept the generic max_output_tokens=8192."
|
|
10
|
+
changes:
|
|
11
|
+
- "providers/openrouter.py: OPENROUTER_UNION_ALPHA_MODEL/_CONTEXT_WINDOW/_MAX_OUTPUT_TOKENS; added to default custom_models; model_configuration_profile applies context_window and max_model_len 262144, max_output_tokens 131072, supports_tool_choice, supports_vision, model_profile 'openrouter-union-alpha-262k'. Protocol selection unchanged: Union Alpha stays on openai_chat."
|
|
12
|
+
- "config_migrations.py: marker openrouter_union_alpha_catalog_20260917 appends stealth/union-alpha to an existing openrouter custom_models list once."
|
|
13
|
+
- "tests/test_openrouter_provider.py: +3 tests (default + profile, chat-only protocol, idempotent migration)."
|
|
14
|
+
verification:
|
|
15
|
+
cli: "Isolated config dir, real entrypoint: `ciel_runtime.py provider openrouter` then `model stealth/union-alpha` stored current_model stealth/union-alpha, context_window/max_model_len 262144, max_output_tokens 131072, model_profile openrouter-union-alpha-262k, supports_vision and supports_tool_choice true, migration marker true; `models openrouter` lists ciel-runtime-openrouter-stealth-union-alpha."
|
|
16
|
+
tests: "Isolated per-file runs: test_openrouter_provider 24, test_opencode_provider 58, test_opencode_catalog_snapshot 5, architecture_contracts 261 (42 skipped), architecture_budget 2, plus every test file that calls apply_config_migrations or reads the openrouter defaults (10 files, 305 tests) — all OK. ruff clean on changed files. Live router pid 51576 unchanged."
|
|
17
|
+
not_verified:
|
|
18
|
+
- "No OpenRouter API key on this computer, so no generation request was sent to stealth/union-alpha; tool calling and image input are taken from the endpoint metadata, not exercised."
|
|
19
|
+
- "Whether OpenRouter's Anthropic-compatible /api/v1/messages route serves Union Alpha; it is not documented on the model page, so it was not enabled."
|
|
20
|
+
not_changed: "stealth/ox-alpha stays in the defaults and keeps its profile although OpenRouter currently lists no endpoint for it; removing it was not requested."
|
|
21
|
+
state: "Committed bff7596, published as 0.2.47-nightly.20260918-005041.0fde800 on the npm nightly tag."
|
|
22
|
+
pareto_retirement_20260918:
|
|
23
|
+
finding: "Hours after the catalog entry shipped, POST /api/v1/chat/completions with model stealth/union-alpha returns 404: 'Thank you for participating in the Stealth Union Alpha testing period. This model was Unbiased's Pareto. Use it now: https://openrouter.ai/unbiased/pareto' (observed 2026-09-18 ~01:0x UTC with the user's key). GET /api/v1/models no longer lists it; it lists unbiased/pareto (name 'Pareto', context_length 262144, prompt pricing 0.0000025 — now paid)."
|
|
24
|
+
live_probe: "unbiased/pareto answered HTTP 200 'OK' (prompt 31 tokens incl. 7 cached, completion 5, cost 9.925e-05)."
|
|
25
|
+
changes:
|
|
26
|
+
- "providers/openrouter.py: OPENROUTER_PARETO_MODEL/_CONTEXT_WINDOW/_MAX_OUTPUT_TOKENS replace the UNION_ALPHA constants; default custom_models now ('stealth/ox-alpha', 'unbiased/pareto'); model_profile 'openrouter-pareto-262k' with the same 262144/131072 numbers; protocol stays openai_chat."
|
|
27
|
+
- "config_migrations.py: marker openrouter_pareto_catalog_20260917 removes stealth/union-alpha from existing custom_models and appends unbiased/pareto once (runs after the union-alpha marker, so both fresh and older configs converge)."
|
|
28
|
+
- "tests/test_openrouter_provider.py: default-model/profile and protocol tests renamed to pareto (asserts stealth/union-alpha is gone from the defaults); migration test asserts the swap preserves private models and both markers; new test covers configs that never received the union-alpha entry."
|
|
29
|
+
verification: "test_openrouter_provider 25 OK, ruff clean; live generation probe 200. Committed bf9d480, pushed to nightly; publish run pending/monitored."
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
okf_version: "1.0"
|
|
2
|
+
task: "Deploy the generalised Codex completion check as an npm nightly and to this computer."
|
|
3
|
+
source_commit: "7c484099e244ed8a31f350aebda6d8e776a1a837"
|
|
4
|
+
scope: "codex_completion_gate.py, codex_turn_recovery.py, provider_responses_passthrough.py, providers/meta.py, four test files, and the fix journal docs/journal/2026/09/17/fixes/codex/passthrough-compaction-completion-gate.okf."
|
|
5
|
+
excluded: "Uncommitted ConPTY/channel work (channel_terminal_proxy.py, windows_conpty.py, untracked windows_console_guard.py) and all other untracked journals were not committed or published."
|
|
6
|
+
nightly:
|
|
7
|
+
branches: "origin/nightly-0.2.47 and origin/nightly both moved 6fee3e8 -> 7c48409."
|
|
8
|
+
version: "0.2.47-nightly.20260917-160314.7c48409"
|
|
9
|
+
npm_tag: "npm view @oneciel-ai/ciel-runtime@nightly returns that version with gitHead 7c484099e244ed8a31f350aebda6d8e776a1a837."
|
|
10
|
+
ci: "https://github.com/OneCielAI/ciel-runtime/actions/runs/35243871166 succeeded: quality, test (unit), test (router), test (channel), test (runtime), python-minimum."
|
|
11
|
+
publish: "https://github.com/OneCielAI/ciel-runtime/actions/runs/35243871101 succeeded, including its npm test gate and the published-tarball verification step."
|
|
12
|
+
tarball: "npm pack of the exact version downloaded and extracted locally (600 files); runtime_constants VERSION matches; provider_responses_passthrough.py contains _completion_continuation."
|
|
13
|
+
local:
|
|
14
|
+
launcher_home: "C:/Users/djlov/.local/share/ciel-runtime, installed with the tarball's install.ps1 (CIEL_RUNTIME_INSTALL_HOME set to that path, PREFIX=~/.local). User env CIEL_RUNTIME_HOME unchanged at that path."
|
|
15
|
+
npm_package: "C:/Users/djlov/AppData/Roaming/npm/node_modules/@oneciel-ai/ciel-runtime, npm install -g pinned to the exact version (6fee3e8 build -> 7c48409 build)."
|
|
16
|
+
backups:
|
|
17
|
+
- "C:/Users/djlov/AppData/Local/Temp/ciel-runtime-local-before-general-gate-7c48409-111434 (722 files, count matched source)."
|
|
18
|
+
- "C:/Users/djlov/AppData/Local/Temp/ciel-runtime-npm-before-general-gate-7c48409-111520 (947 files, count matched source)."
|
|
19
|
+
verification:
|
|
20
|
+
versions: "~/.local/bin/ciel-runtimectl.ps1 version and %APPDATA%/npm/ciel-runtimectl.cmd version both print ciel-runtime 0.2.47-nightly.20260917-160314.7c48409."
|
|
21
|
+
hashes: "SHA256 of ciel_runtime.py, runtime_constants.py, codex_completion_gate.py, codex_turn_recovery.py, provider_responses_passthrough.py and providers/meta.py equal the tarball in both installed copies; support .py count 354 = tarball."
|
|
22
|
+
behaviour: "Offline check importing each installed copy by path: a text-only reply to a tool-bearing request straight after a user message triggers one follow-up, the client receives the follow-up's function_call bytes, the follow-up headers carry no inherited Content-length, the translated-route predicate checks a reply after a plain user message, and tool_choice none is skipped. All true for both copies."
|
|
23
|
+
tests_before_push: "Local: 20 affected test files, 720 tests, isolated config dir, all OK. Full groups were not run locally because a live router (pid 51576, port 9469) was serving; the full four groups ran in CI and in the publish workflow's npm test gate, both green."
|
|
24
|
+
limitation: "The live router pid 51576 on port 9469 (workspace g:/ciel-walkie) and its client were not restarted; /health still reports 0.2.47-nightly.20260917-050538.6fee3e8, so running sessions keep the old code until relaunched. YETI-01 was not touched and still runs the 6fee3e8 build."
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
okf_version: "1.0"
|
|
2
|
+
task: "Deploy tool-backed Codex completion-gate fix locally, to YETI-01, and as an npm nightly."
|
|
3
|
+
source_commit: "6fee3e8045c174b064446a1f7955341e7bc0b132"
|
|
4
|
+
scope: "Routed Codex recovery, native Responses completion gate, three test files, and fix journal."
|
|
5
|
+
excluded: "Existing uncommitted ConPTY/channel files and unrelated journals were not committed or published."
|
|
6
|
+
nightly:
|
|
7
|
+
branches: "origin/nightly and origin/nightly-0.2.47 both point to 6fee3e8."
|
|
8
|
+
version: "0.2.47-nightly.20260917-050538.6fee3e8"
|
|
9
|
+
npm_tag: "nightly resolves to that exact version and gitHead 6fee3e8."
|
|
10
|
+
tarball: "npm pack --dry-run of the exact published version succeeded; both changed recovery modules are present."
|
|
11
|
+
ci: "https://github.com/OneCielAI/ciel-runtime/actions/runs/35184223716 succeeded."
|
|
12
|
+
publish: "https://github.com/OneCielAI/ciel-runtime/actions/runs/35184223667 succeeded, including published tarball verification."
|
|
13
|
+
local:
|
|
14
|
+
npm_package: "C:/Users/djlov/AppData/Roaming/npm/node_modules/@oneciel-ai/ciel-runtime"
|
|
15
|
+
launcher_home: "C:/Users/djlov/.local/share/ciel-runtime"
|
|
16
|
+
backups:
|
|
17
|
+
- "C:/Users/djlov/AppData/Local/Temp/ciel-runtime-npm-before-turn-gate-6fee3e8 (886 files matched)."
|
|
18
|
+
- "C:/Users/djlov/AppData/Local/Temp/ciel-runtime-local-before-turn-gate-6fee3e8 (1,059 files matched)."
|
|
19
|
+
verification: "Global npm package and launcher report the exact nightly; runtime, version constants, and both recovery modules match SHA256 hashes. Installed routed and native completion-gate probes both returned True."
|
|
20
|
+
yeti_01:
|
|
21
|
+
installed_package: "C:/Users/YETI-01/AppData/Roaming/npm/node_modules/@oneciel-ai/ciel-runtime"
|
|
22
|
+
backup: "C:/Users/YETI-01/AppData/Roaming/ciel-runtime/deployment-backups/before-6fee3e8 (946 files matched)."
|
|
23
|
+
install: "Explicit npm global prefix for YETI-01, pinned to the exact published version; npm reported one changed package. The package version read immediately before that command was already the new version; the installer nevertheless ran and was rechecked."
|
|
24
|
+
verification: "YETI-01 launcher reports the exact nightly. Four core SHA256 hashes match the local published package. Installed routed and native completion-gate probes both returned True."
|
|
25
|
+
tests: "npm test passed all isolated groups: unit 1,444, router 1,108, channel 406, runtime 293; 3,251 tests total. Targeted ruff and git diff checks passed."
|
|
26
|
+
limitation: "No active YETI-01 Codex/Router process was restarted, and the affected long-running session was not replayed end-to-end. Existing processes may retain loaded old code until restarted."
|
|
27
|
+
runtime_probe: "YETI-01 localhost:9407 /health was not reachable at verification time, so no active-router behavior or version was asserted."
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
okf_version: "1.0"
|
|
2
|
+
task: "Deploy the accumulated working-tree changes (OpenCode client identity, OpenRouter Union Alpha catalog, codex turn gates from earlier today) to the local nightly install."
|
|
3
|
+
commit: bff7596b27978c97a280dc5bba909222d5c87538
|
|
4
|
+
deployed_version: "0.2.47-nightly.20260918-004001.bff7596"
|
|
5
|
+
procedure:
|
|
6
|
+
- "Local commit bff7596 on nightly-0.2.47 (no push — user asked for a local deploy only; push to the nightly ref would trigger the npm Publish workflow)."
|
|
7
|
+
- "Mirrored the CI nightly stamping (npm-publish.yml 'Compute and apply nightly version') on the packed tree: VERSION = \"0.2.47-nightly.20260918-004001.bff7596\" in runtime_constants.py and package.json, stamped after the commit and reverted in the working tree afterwards (same as CI, which never commits the stamp)."
|
|
8
|
+
- "npm pack of the stamped working tree -> untar into a temp dir -> verified the stamp inside the tarball."
|
|
9
|
+
- "Backed up the previous install to %TEMP%\\ciel-local-backup-before-20260918-004001.bff7596."
|
|
10
|
+
- "Ran the package's install.ps1 without CIEL_RUNTIME_INSTALL_HOME, so it upgraded the existing home C:\\Users\\djlov\\.local\\share\\ciel-runtime in place (CIEL_RUNTIME_HOME user env unchanged, still that path)."
|
|
11
|
+
verification:
|
|
12
|
+
launcher: "ciel-runtimectl.ps1 version -> ciel-runtime 0.2.47-nightly.20260918-004001.bff7596."
|
|
13
|
+
hashes: "SHA256 of ciel_runtime.py, providers/opencode.py, providers/opencode_go.py, providers/openrouter.py, provider_request_access.py, architecture.py match between working tree and installed copy."
|
|
14
|
+
functional: "Imported ciel_runtime from the installed dir: VERSION matches, provider_headers('opencode-go') returns user-agent opencode/1.18.31, x-opencode-client cli, ses_/msg_ 24-char ids; openrouter default catalog contains stealth/union-alpha."
|
|
15
|
+
pre_checks: "compileall OK, check_project_metadata OK (28 files), ruff clean on all changed files (2 remaining errors are pre-existing in old docs/journal/2026/09/12 diagnostic scripts)."
|
|
16
|
+
tests:
|
|
17
|
+
scope: "Full npm test groups were NOT run: three live routers (pids 51576, 70192, 87028) and several cli sessions were serving during the deploy, and the standing rule forbids full test groups while a real router serves."
|
|
18
|
+
evidence_instead: "Isolated per-file sweep earlier in the session: 20 files, 718 tests, 717 OK; the single failure (test_claude_native_provider.StopRouterGuaranteeTests.test_start_router_replaces_matching_router_by_default) was stash-proven pre-existing and environment-dependent (test patches subprocess.Popen globally while an un-mocked prelaunch taskkill path runs)."
|
|
19
|
+
live_processes:
|
|
20
|
+
state: "Routers 51576/70192/87028 and the cli processes keep running the previous snapshot (0.2.47-nightly.20260917-160314.7c48409) until each is relaunched; per standing rule the live sessions were not restarted or sent input."
|
|
21
|
+
state: "Installed locally; commit bff7596 is local only (not pushed, not published to npm)."
|
|
22
|
+
nightly_push_followup:
|
|
23
|
+
first_push: "856e0e0 pushed to refs/heads/nightly and nightly-0.2.47; CI 35292306952 and Publish 35292306836 failed with ModuleNotFoundError: ciel_runtime_support.windows_console_guard — the module existed only as an untracked working-tree file and was not committed. Lesson: staging by modified-file list alone misses untracked source files."
|
|
24
|
+
fix_1: "3d132dc adds the missing module. Second failure: test_windows_conpty.test_parent_console_preserves_code_pages_and_restores_exact_handles_and_modes reached the real Windows-only console-guard helper on the Linux runner (OSError 'console recovery helper failed to become ready')."
|
|
25
|
+
fix_2: "0fde800 makes guard start best-effort (except OSError -> _console_guard = None) and mocks start_console_guard in the parent-console test with call-argument assertions. Local: conpty file 33/33 OK, ruff clean."
|
|
26
|
+
green: "CI 35292698229 success, Publish 35292698231 success; npm dist-tag nightly = 0.2.47-nightly.20260918-005041.0fde800."
|
|
27
|
+
local_resync: "Reinstalled in place from a locally packed 0fde800 tree as 0.2.47-nightly.20260918-010149.0fde800 (backup ciel-local-backup-before-20260918-010149.0fde800); installed windows_conpty.py/windows_console_guard.py SHA-match the working tree; launcher version verified."
|
|
28
|
+
union_alpha_upstream: "Meanwhile union-alpha remains unavailable upstream and it is identity-independent: OpenCode CLI itself (v1.18.31) hit the same error in the user's screenshot (OCR: invalid_request_error, api_error 'Error from provider (Console): Upstream request failed: Model is unavailable'); fresh probes show Zen 400 'Model is unavailable' and Go 403 'API access paused for this organization' for both identities, while the same machine's OpenCode session succeeded at 05:55 KST — upstream flapping, gateway /v1/models still lists union-alpha."
|
package/package.json
CHANGED