repo create: suggest a name the server would accept

main

Commit

hiddecoyesterday

The parenthetical was the typed string minus four bytes, which is only advice by coincidence. "WEB.git" was answered with (use "WEB"), and the server then refused "WEB" for carrying uppercase -- a second refusal, naming a rule the first message had not mentioned. A raw ULID, a name with consecutive dots, a 65-character name and an underscored one were all proposed the same way.

Lowercase the remainder and check its shape before offering it. Create is the one path that does not fold case: lookups fold, which is why nativeRepoRe accepts uppercase, but an uppercase name is refused outright at create time. So the answer to "WEB.git" is "web".

The shape checks reuse what is already here -- nativeRepoRe, which carries the server's accepted name shape, plus the two rules a regexp cannot. No second copy of that shape was needed.

This gates whether the CLI speaks, never whether it refuses, and that is what makes a local check safe here. nativeRepoRe drifts one way: if the accepted shape loosens, a local check refuses names that would work. A ref survives that -- a ULID or a full entire:// URL gets past it -- but a refused create has no escape hatch, so the name itself stays the server's to judge. Going quiet costs a hint; guessing wrong costs a name the user cannot create.

Refs COR-1892

Entire-Checkpoint: 01M3SM88R8R1H0NEAC1AHWHRJG

Checkpoints

Standardize Repository Name Validation Logic

Claude CodeOpus 5.[1m]
View session
Checkpoint 1