fix: return None from image_created_at when timestamp is absent
test / integration (pull_request) Successful in 14s
test / coverage (pull_request) Successful in 41s
lint / lint (push) Failing after 45s
test / unit (pull_request) Successful in 1m37s

FROM-scratch images (commit_container output) and registry images built
for reproducibility often omit the created field entirely. Both backends
were calling die() in that case, crashing the cached-image quickstart
before any container started.

image_created_at now returns datetime | None — None when the field is
absent or unparseable, die() only on real inspect failures (non-zero
exit, malformed JSON). stale_checks in both backends skips the staleness
check when None is returned.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-07-19 01:04:25 +00:00
parent fa3e45cc54
commit 6082e92b46
6 changed files with 45 additions and 34 deletions
+6 -2
View File
@@ -231,7 +231,11 @@ def stale_checks(plan: DockerBottlePlan) -> None:
return
committed = read_committed_image(plan.slug)
if committed and docker_mod.image_exists(committed):
check_stale(f"agent image {committed!r}", docker_mod.image_created_at(committed))
ts = docker_mod.image_created_at(committed)
if ts is not None:
check_stale(f"agent image {committed!r}", ts)
return
if docker_mod.image_exists(plan.image):
check_stale(f"agent image {plan.image!r}", docker_mod.image_created_at(plan.image))
ts = docker_mod.image_created_at(plan.image)
if ts is not None:
check_stale(f"agent image {plan.image!r}", ts)