say which build this is in the log an operator actually reads (v0.4.81)

boot.sh has printed `profile=… image=…` since the day a pod reported a
dependency missing that had already been published under its tag. It prints it
before the app exists, though -- to the container's stdout and the pod's own
boot log -- and the orchestrator collects a pod's log FROM THE APP, so the file
an operator reads begins at "lifespan start" and the build identity is not in
it. A pod serving a cached `:latest` could not be told from one serving a fresh
image using the log we actually have, which is the question those variables
were baked in to answer.

Tonight that cost a direct answer: an FP8 KV cache proved the pod was on the
new image only by inference -- FP8 cannot initialise without the precompiled
kernels the old image lacks -- which is sound but is not the same as reading the
tag.

The app says it itself now, in its first lines, and stays silent on an install
where nothing was baked.
Co-Authored-By: 's avatarClaude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S8LAP3ueNzQJtwzhgVbq66
parent 34612ec8
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
# Canonical product version for CoderAI — single source of truth. Both the API # Canonical product version for CoderAI — single source of truth. Both the API
# metadata and the admin web UI read from here. # metadata and the admin web UI read from here.
__version__ = "0.4.80" __version__ = "0.4.81"
__tagline__ = "Complete orchestration, distribution and escalation of remotizable advanced inference." __tagline__ = "Complete orchestration, distribution and escalation of remotizable advanced inference."
# Configure the CUDA caching allocator BEFORE torch is imported anywhere. # Configure the CUDA caching allocator BEFORE torch is imported anywhere.
......
...@@ -102,6 +102,20 @@ async def lifespan(app: FastAPI): ...@@ -102,6 +102,20 @@ async def lifespan(app: FastAPI):
import asyncio as _asyncio import asyncio as _asyncio
boot_phase("lifespan start") boot_phase("lifespan start")
# WHICH BUILD IS THIS. boot.sh already says so, but its phases are written
# before the app exists -- to the container's stdout and the pod's own boot
# log -- and the orchestrator collects a pod's log from the APP, so what it
# fetches begins here. A pod serving a cached `:latest` therefore could not
# be told from one serving a fresh image using the log an operator actually
# reads, which is the question these variables were baked in to answer
# (2026-10-22: an FP8 cache proved the new image only by inference, because
# this line was not in the collected log).
_tag = os.environ.get("CODERAI_IMAGE_TAG") or ""
if _tag or os.environ.get("CODERAI_GIT_SHA"):
boot_phase(f"build: image={_tag or 'unknown'} "
f"git={os.environ.get('CODERAI_GIT_SHA') or 'unknown'} "
f"profile={os.environ.get('PROFILE') or 'none'}")
# Before anything schedules work: every `asyncio.to_thread` in this process # Before anything schedules work: every `asyncio.to_thread` in this process
# uses the loop's default executor, and an untold loop sizes it for # uses the loop's default executor, and an untold loop sizes it for
# incidental background work rather than for a fan-out of blocking pod # incidental background work rather than for a fan-out of blocking pod
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment