Skip to content

rules(cli): a listing answers from the published index, and never multiplies - #552

Open
elronbandel wants to merge 1 commit into
mainfrom
elron/rules-list-index
Open

rules(cli): a listing answers from the published index, and never multiplies#552
elronbandel wants to merge 1 commit into
mainfrom
elron/rules-list-index

Conversation

@elronbandel

Copy link
Copy Markdown
Contributor

Closes #512. Rules only — the code is #515's successor (#552), per contributing rule 2.

Before

  1. List. eval-containers list benchmarks|agents|models — MUST read Docker image labels. No separate database or index.

One workable reading, and it is what the code did: docker images + docker inspect. So list could only describe what you had already pulled — nothing on
a clean machine, and never what the fleet publishes.

After

A listing answers from the published index (evals/index:latest, written by
fleet-index.py from the registry itself and the components' own labels), or
from the checkout under --local. The prohibition that matters is kept: the CLI
keeps no list of its own.

Plus the sentence the dashboard paid for:

A listing MUST offer a benchmark×agent pair only if that pair is published
under the tag a run would pull, and MUST NOT derive pairs by multiplying a
benchmark list by an agent list.

It offered the product of two lists, so openhands — published for one benchmark
— was offered for ninety-nine; and an image whose manifest list was never
stitched (latest-amd64, no latest) was offered although nothing could pull
it. 719 of 7649 artifacts were in that state.

curl joins the underlying tools for the three HTTP calls that read the index.

Rules checked against

🤖 Generated with Claude Code

…tiplies

Rule 14 said `list` MUST read Docker image labels, with no separate index. The
one workable reading is what the code did — docker images plus docker inspect —
so `list` could only describe what you had already pulled: nothing on a clean
machine, and never what the fleet publishes, which is the question a listing is
asked.

The release now writes that down (#519). The index is not the list the rule
forbids: it is derived by the publisher, from the registry and from the
components' own labels, so nothing is kept that a component does not declare.
The rule now says where a listing may read from — the index, or the checkout
under --local — and keeps the prohibition that matters: the CLI keeps no list of
its own.

The last sentence is the lesson the dashboard paid for. It offered the product
of a benchmark list and an agent list, so an agent published for one benchmark
was offered for ninety-nine, and an image whose manifest list was never stitched
(latest-amd64, no latest) was offered although nothing could pull it. A listing
offers a pair only if that pair is published under the tag a run pulls.

curl joins the underlying tools for the three HTTP calls that read the index.

Closes #512

Signed-off-by: Elron Bandel <elron.bandel@ibm.com>

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

rfc: .agents/src/RULES.md#14 — a listing should read the published catalog, not only images you pulled

1 participant