rules(cli): a listing reads the published catalog, not only what you pulled - #513
Closed
elronbandel wants to merge 1 commit into
Closed
rules(cli): a listing reads the published catalog, not only what you pulled#513elronbandel wants to merge 1 commit into
elronbandel wants to merge 1 commit into
Conversation
This was referenced Sep 9, 2026
…pulled Rule 14 said `list` MUST read Docker image labels, with no separate database or index. The one workable reading is what the code does — `docker images` plus `docker inspect` — so `list` answers only for images already pulled to the local daemon: nothing at all on a clean machine, and never the question a listing is asked, which is what the fleet publishes. The release now writes that answer down (#497): evals/catalog:latest, derived by containers/scripts/fleet-catalog.sh from the components' own LABEL lines. The sentence that blocked reading it guards against a second source of truth that drifts from the components — which this is not. It is the same source, published by the thing that publishes the images, so nothing is stored that a component does not declare. So rule 14 now says where the labels may be read from — the published catalog, or the checkout under `--local` — and keeps the prohibition that matters: the CLI keeps no index of its own. `curl` joins the underlying tools for the three HTTP calls that read the catalog (anonymous token, manifest, one blob). Closes #512 Signed-off-by: Elron Bandel <elron.bandel@ibm.com>
elronbandel
force-pushed
the
elron/rules-list-published
branch
from
September 9, 2026 10:58
e63fba7 to
93f9166
Compare
Contributor
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #512. Rules only — the code that depends on it lands separately
(contributing rule 2).
The rule today
That has one workable reading, and it is what the code does:
docker imagestofind them,
docker inspectto read them. Solistanswers only for imagesalready pulled to the local daemon — nothing at all on a clean machine, and
never the question a listing is asked: what can I run?
What changed
catalog (
evals/catalog:latest, written by the release from those sameLABELlines), or the checkout's
containers/*/*/Dockerfileunder--local. Theprohibition that matters is kept verbatim in spirit — the CLI keeps no index
of its own.
curladded, for the three HTTP calls that read thecatalog (anonymous token, manifest, one blob). Adding a tool is itself a rule
change and is recorded in the changelog, as the table requires.
Why the catalog is not the index the rule forbids
The concern behind "no separate database or index" is a hand-maintained list
that drifts from the components. The catalog is derived — by the publisher, at
publish time, from the components' own labels — so nothing is stored that a
component does not declare, and there is nothing to keep in step by hand. Same
source of truth, published.
Rules checked against
.agents/meta/rules/RULES.md— the rule states an inspectable property of thefinished artifact, and the change is recorded in this file's changelog with its
reason (no silent drift).
.agents/contributing/RULES.md1 (resolves rfc: .agents/src/RULES.md#14 — a listing should read the published catalog, not only images you pulled #512), 2 (rules only — nocode in this PR), 3 (this section), 4 (no tool attribution).
Follow-up
The code PR makes
listread the catalog by default and--localread thecheckout, and extends
fleet-catalog.shto carry the per-component labels alisting shows.
Noticed while writing this, not in scope:
cli/src/build.rsshells out tobash(to run a benchmark'sbuild.sh), which is not in the tools tableeither — that is drift, and wants its own issue.