artifacts fork: no way to name the target repo; derived name fails the repo-name regex
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 48/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- typescript
- Domain
- api, backend-api-design, cli
Research direction
Start with the cf artifacts namespaces repos fork command and cf schema artifacts namespaces repos fork output, then compare its request shape with the Workers binding's repo.fork(name, opts). Determine whether a target name can be supported or whether the unnamed behavior and derived value need clearer handling; done means the fork succeeds predictably or the limitation and offending name are reported clearly.
Written by the indexing model from the issue text.
Description
cf artifacts namespaces repos fork cannot be given a target repository name. The REST operation derives one that violates the Artifacts repo-name rule, so every fork attempt fails with a 400.
Version: cf v1.0.0-beta.10
Actual
$ cf artifacts namespaces repos fork ingress-probe --namespace spike --description "..." --default-branch-only true
┌ APIError
│ [10101] Invalid repo name: must match /^[a-zA-Z0-9][a-zA-Z0-9._-]*$/
│ 400 Bad Request · HTTP /accounts/<acct>/artifacts/namespaces/spike/repos/ingress-probe/fork
cf schema confirms there is no field to supply a target name:
$ cf schema artifacts namespaces repos fork
{
"operationId": "artifacts_repos_fork",
"httpMethod": "POST",
"path": "/accounts/{account_id}/artifacts/namespaces/{namespace}/repos/{name}/fork",
"pathParams": [ account_id, namespace, name ],
"queryParams": [],
"requestBodyFields": [
{ "name": "default-branch-only", "type": "boolean", "required": false },
{ "name": "description", "type": "string", "required": false },
{ "name": "read-only", "type": "boolean", "required": false }
]
}
There is no name or target field. Passing one anyway is silently ignored rather than rejected, which makes the failure look like a server-side naming bug:
$ cf artifacts namespaces repos fork ingress-probe --namespace spike --body '{"name":"ingress-probe-fork", ...}'
┌ APIError
│ [10101] Invalid repo name: must match /^[a-zA-Z0-9][a-zA-Z0-9._-]*$/
The derived name appears to contain a / (consistent with a namespace/name-style default), which the repo-name regex forbids.
Expected
Either the REST operation accepts a target name — the Workers binding's repo.fork(name, opts) does exactly this, so the capability exists on the platform — or the CLI documents that forks are unnamed and the API error names the offending derived value instead of only restating the regex.
Impact
Fork is unusable from the CLI and REST API today, so the only working path is a deployed Worker using the binding. That is a meaningful gap: for one-repo-per-agent or one-fork-per-task patterns there is no way to predict or control the resulting repo name, and no way to look the fork up by name afterwards.
- Dominant language
- TypeScript
- Stars
- 853
- Forks
- 42
- Avg merge
- 17h 57m
- Merged PRs (30d)
- 146
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from cloudflare/cf
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
cloudflare/cf#344 ·
Maintainers usually reply within 1 day
-
upstream
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
cloudflare/cf#262 ·
Maintainers usually reply within 1 day
-
`cf dev` rejects `--port` and `--host` for Vite projects, including the `cf init` templatePossibly taken @jamesopstad claimed this 6 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
cloudflare/cf#223 · 2 assignees ·
Maintainers usually reply within 1 day
-
upstream
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
cloudflare/cf#179 ·
Maintainers usually reply within 1 day
-
Difficulty 4/5 3-5 days Newbie friendliness 58/100
cloudflare/cf#347 ·
Maintainers usually reply within 1 day
Similar issues
-
check:passed streams:add
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
iptv-org/iptv#55821 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
vercel-labs/wterm#246 ·
Maintainers usually reply within 1 day
-
bug ready-for-agent
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
nearform/lastlight#452 · 1 comment · 1 reaction ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
fix(console): include PARTITIONED BY in generated table DDLPossibly taken @aubdiy claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
apache/polaris-tools#291 ·
Maintainers usually reply within 6 days