Per-repo image_ref setting + default dev image #207
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Cloonar/coding-lab#207
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What to build
Let each repo choose the dev image its agents run in, per the any-image + injected-tools design: new nullable
repos.image_refend to end (migration, API, repo-settings UI). NULL falls back to a globally configured default dev image. Validation: registry refs pinned by digest (or resolved-and-pinned on save), https registries only. Pull policy: pull-if-missing at spawn with a clear spawn error surfaced to the run when the pull fails. Document the image contract (shell + coreutils + git; the agent layer is always injected via the tools mount, so images need no lab-specific contents).Acceptance criteria
Blocked by
Agent Brief
Category: enhancement
Summary: Nullable
repos.image_refchoosing the dev image container runs use, falling back to a globally configured default; refs digest-pinned on save; pull-if-missing at spawn with surfaced errors.The issue body's "What to build" and acceptance-criteria checklist are the authoritative spec (grilled 2026-07-22). This brief adds the interface map and scope fences.
Current behavior:
After #205, container runs use a fixed/globally configured image; repos cannot choose their own. The per-repo settings pattern this should follow is well established (paired sqlite/postgres migrations altering
repos, the repo PATCH settings-update surface, a repo-settings UI section using the shared settings layout/form helpers).Desired behavior:
Per the issue body:
repos.image_refend to end with NULL → global default; https registries only; non-digest refs resolved and stored digest-pinned on save; spawn pulls if missing and a failed pull fails the spawn with an actionable error visible on the run in the UI; the image contract documented (shell + coreutils + git — the agent layer always arrives via the injected tools mount, so images need no lab-specific contents).Key interfaces:
repos.image_refmigration + the repo settings-update PATCH surface + a repo-settings UI field (Agents/runner section is the natural home, next torepos.runner).Acceptance criteria: the checklist in the issue body.
Out of scope:
Blocked by
(recorded in the issue body: #205)