Repository navigation
Conversation
…ta reads The metadata-read response policy and the OpenShell metadata provider compared GitHub's full_name exactly with the lowercased registry name, so a repository with capitals in its name failed every metadata read (finding 2239). Both now use the shared isSameGitHubRepository helper and still release the admitted registry name; the ID check and the ASCII owner/repository shape stay exact.
|
🦞👀 Pull request received. I will update this pull request when review starts. ClawSweeper review completeClawSweeper finished reviewing this revision. The review result is being finalized. |
…ames Review nits: the OpenShell metadata provider also refuses a non-ASCII lookalike and a null full_name, and the metadata-read route accepts the all-caps spelling.
|
Codex review: needs maintainer review before merge. What this changesThis PR accepts ASCII case differences in GitHub repository metadata while returning the registered repository name. Example: The registered identity is fixture/repository with ID 73, and GitHub returns Fixture/Repository with ID 73.
Review scores
ProductKind: Bug fix · Worth it: Yes · Fix scope: Complete Merge readiness✅ Ready for maintainer review Keep open: current main still rejects valid metadata replies with GitHub's capitalization, and this PR provides a focused repair with no concrete introduced defect found. Priority: P2 Before mergeNone. FindingsNone. Tests
Agent review detailsHow this fits togetherRepository metadata passes through the repository credential sender or protected egress provider, which validates GitHub's response and releases only the admitted repository identity. flowchart TD
A[Agent metadata request] --> B[Repository route authorization]
B --> C[GitHub metadata GET]
C --> D[Response identity validation]
D --> E[Registered identity response]
D --> F[Blocked invalid response]
Technical reviewBest possible solution: Land the shared comparison repair through both existing response owners while preserving exact repository IDs and admitted-name output. Do we have a high-confidence way to reproduce the issue? Current-main source deterministically rejects Fixture/Repository for registered fixture/repository despite a matching numeric ID; the added scenarios cover that input, but this read-only review ran no target code. Is this the best way to solve the issue? The patch fixes both affected response owners with the already approved shared comparison, without introducing another identity policy or changing the released response shape. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning medium; reviewed against f0801501ca06. Provenance checked
TestingProof path: in-process harness. SecurityNone. EvidenceWhat I checked:
Review metrics
LabelsLabel changes:
Label justifications:
Rating scale6/6 🦀 challenger crab · 5/6 🦞 diamond lobster · 4/6 🐚 platinum hermit · 3/6 🦐 gold shrimp · 2/6 🦪 silver shellfish · 1/6 🧂 unranked krab. Overall follows the weaker of proof and patch quality; ✨ marks media proof (a screenshot, video, or linked artifact) that directly shows the changed behavior. WorkflowClawSweeper edits this one comment on every review. Comment Reviewed October 23, 2026, 3:35 AM ET / 07:35 UTC. |
Problem
Finding 2239: repository metadata reads compare GitHub's
full_nameexactly with the registry's repository name. The registry lowercases owner/repository, but GitHub answersGET /repos/<name>with the repository's own spelling. So for a repository with capitals in its name, both the metadata-read response policy (metadata-response.ts) and the OpenShell metadata provider (egress-proxy/github-metadata.ts) reject the reply, and every metadata read fails. This is the same root cause as 2232/2236 (#3278, #3280).Change
isSameGitHubRepositoryhelper fromdrivers/repo/credentials/client-contracts.ts(added by fix(repository): accept GitHub's spelling of the repository in native draft PR receipts #3280). There is no new copy. The egress proxy already imports fromdrivers/repo/credentials/, and the repository-credentials boundary check scans only credential sources, so it passes unchanged.full_name, which was always equal to the admitted name; it now returnsoperation.repositoryexplicitly, so the released body is unchanged.metadataResponsebody hook, like the existingdraftResponse.Verification
tests/integration/protected-repository-metadata-read.test.mjs: a reply in GitHub's spelling is accepted through the real route and sender, and the recipient gets the configured lowercase identity. This holds for both mixed and all-caps spellings. A.gitsuffix and a non-stringfull_nameare refused.tests/integration/egress-prepared-github-metadata.test.mjs: the prepared OpenShell metadata exchange acceptsFixture/RepositoryandFIXTURE/REPOSITORYand releasesfixture/repository. It blocksfixture/repository-other,fixture/repository.git, a non-ASCII lookalike (ſ) and anullname.tsc -b, eslint and prettier are clean on the touched files.Risks
Low. The comparison widens only by ASCII letter case on a reply that also has to carry the admitted numeric repository ID. The released body is unchanged.