← Ledger

Phase 7d-A-6 close — Clone-on-submit for target_repo

Date: 2026-07-06 Status: Accepted Plan: docs/plans/2026-07-06-phase-7d-a-6-clone-on-submit.md

Summary

Phase 7d-A-6 removed the target_repo blocker: ralph can now clone a remote GitHub URL into its own filesystem on submit, so hosted /ralph can execute against any repo the shared PAT can read. Before: every submit needed an absolute path that only existed on the operator's laptop. After: caller sends target_repo_url, ralph resolves it into /data/repos/<sha256(url)[:16]>/, runs the pipeline.

What shipped

Sub-phase Artefact
7d-A-6-1 rocky-hq/contracts#7 — RunConfigSchema gains target_repo_url + target_ref; target_repo optional; .refine() one-of. Version bump 0.3.00.4.0, tag v0.4.0 published to GitHub Packages.
7d-A-6-2 rocky-hq/ralph#8 — src/rocky/serve/repo_cache.py (resolve_from_url, RepoAuthMissing, RepoCloneError) + SubmitRunRequest pydantic mirror + registry.submit prefers URL over path + 8 new tests (6 cache-unit + 2 route).
7d-A-6-2-bump rocky-hq/rocky#104 — parent submodule bump.
7d-A-6-3 rocky-hq/ralph#9 — fly.toml [mounts] block + RALPH_REPO_CACHE_ROOT=/data/repos. Fly volume rocky_ralph_data (3 GB, iad, encrypted) created out-of-band. App scaled to 1 machine.

Verification

Decisions locked

Known limitations

Followups queued

Slice Blocked by Description
7d-A-6-4 Console submit form: add "Repo URL" + "Ref" fields; bump @rocky-hq/contracts to 0.4.0.
7d-A-6-followup-anthropic-key Set ANTHROPIC_API_KEY as a Fly secret + document in ralph/CLAUDE.md.
7d-A-6-followup-eviction LRU / TTL on /data/repos before the volume fills.
7d-A-6-followup-autopush 7d-C Ralph pushes commits back to origin using per-workspace creds.

Related decisions