Dockerfile.lint (landed by #30) names its cache-busting build arg LINT_EPOCH, while the main Dockerfile uses CHECK_EPOCH.
Functionally this is fine — both are fail-closed guards and both provably bust their layers. The cost is not correctness, it is verifiability across repos: the canonical policy fixes the name at CHECK_EPOCH precisely so that a single grep can prove every image in every repo busts its cache, and a second name is invisible to that grep.
Blocked
Do not implement this yet. The proposed policy wording is in sneak/prompts#43 and the question — whether the epoch arg name is uniform across files or per-file — is open on sneak/prompts#40. If the ruling is per-file, this issue closes as wontfix.
Definition of done, if the ruling is "uniform"
Dockerfile.lint and script/lint use CHECK_EPOCH.
script/lint with no build arg still fails closed — an unset ARG is the empty string, which is a perfectly stable cache key, so the guard must reject it rather than serve a cached green.
The existing test asserting the guard still passes, and still fails if the guard is removed.
make check green; script/cibuild green and shown to have actually executed rather than been served from cache.
Not a 1.0.0 blocker.
## Problem
`Dockerfile.lint` (landed by https://git.eeqj.de/sneak/quak/issues/30) names its cache-busting build arg `LINT_EPOCH`, while the main `Dockerfile` uses `CHECK_EPOCH`.
Functionally this is fine — both are fail-closed guards and both provably bust their layers. The cost is not correctness, it is verifiability across repos: the canonical policy fixes the name at `CHECK_EPOCH` precisely so that a single grep can prove every image in every repo busts its cache, and a second name is invisible to that grep.
## Blocked
Do not implement this yet. The proposed policy wording is in https://git.eeqj.de/sneak/prompts/pulls/43 and the question — whether the epoch arg name is uniform across files or per-file — is open on https://git.eeqj.de/sneak/prompts/issues/40. If the ruling is per-file, this issue closes as wontfix.
## Definition of done, if the ruling is "uniform"
- `Dockerfile.lint` and `script/lint` use `CHECK_EPOCH`.
- `script/lint` with no build arg still fails closed — an unset `ARG` is the empty string, which is a perfectly stable cache key, so the guard must reject it rather than serve a cached green.
- The existing test asserting the guard still passes, and still fails if the guard is removed.
- `make check` green; `script/cibuild` green and shown to have actually executed rather than been served from cache.
Not a 1.0.0 blocker.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Problem
Dockerfile.lint(landed by #30) names its cache-busting build argLINT_EPOCH, while the mainDockerfileusesCHECK_EPOCH.Functionally this is fine — both are fail-closed guards and both provably bust their layers. The cost is not correctness, it is verifiability across repos: the canonical policy fixes the name at
CHECK_EPOCHprecisely so that a single grep can prove every image in every repo busts its cache, and a second name is invisible to that grep.Blocked
Do not implement this yet. The proposed policy wording is in sneak/prompts#43 and the question — whether the epoch arg name is uniform across files or per-file — is open on sneak/prompts#40. If the ruling is per-file, this issue closes as wontfix.
Definition of done, if the ruling is "uniform"
Dockerfile.lintandscript/lintuseCHECK_EPOCH.script/lintwith no build arg still fails closed — an unsetARGis the empty string, which is a perfectly stable cache key, so the guard must reject it rather than serve a cached green.make checkgreen;script/cibuildgreen and shown to have actually executed rather than been served from cache.Not a 1.0.0 blocker.
clawbot referenced this issue2026-09-04 11:46:11 +02:00