Repository navigation
Conversation
An Installation switched from the native repository broker to protected Git by following the docs kept drivers.compute.configuration.network.repositoryCredentials. Kubernetes Compute then treated every repository revision as owning repository material Secrets, and each stop, retire and delete listed Secrets the chart no longer lets the worker list (403 every pass, finding 2212). Startup, and therefore the chart's pre-install/upgrade check, now refuses that peer unless repository.nativeSender selects native delivery. The protected Git and external sender docs say to remove it. No RBAC change.
…tice Review follow-up: the refusal names drivers.compute.configuration.network.repositoryCredentials, a configuration test covers an Installation with no repository section, the native guide says the peer is for native delivery only, and a breaking-change notice tells affected operators to delete the peer. The 2026-10-13 notices move to the earlier-notices page to keep the page under the word limit.
|
🦞👀 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. |
|
Codex review: blocked before merge. What this changesThis PR rejects a Kubernetes repository broker peer unless native delivery is selected and documents how operators remove a leftover peer. Example: An Installation switches to protected Git but retains network.repositoryCredentials on port 8443.
Review scores
ProductKind: Bug fix · Worth it: Yes · Fix scope: Complete Merge readiness⛔ Blocked before merge - 1 item remains Keep this PR open: it addresses a concrete repository-cleanup failure with a focused startup check, and no introduced correctness defect was found. Priority: P1 Before merge
FindingsNone. Tests
Agent review detailsHow this fits togetherInstallation composition reads Driver and repository configuration before API or worker startup; Kubernetes Compute subsequently uses the selected peer to manage repository material Secrets. flowchart TD
A[Installation configuration] --> B[Installation loader]
C[Upgrade check] --> B
B --> D[Repository delivery selection]
D --> E[Reject leftover broker peer]
D --> F[Start API and worker]
F --> G[Kubernetes Compute lifecycle]
Technical reviewBest possible solution: Keep the focused composition check, preserve native delivery, and use the documented peer-removal recovery after existing repository sessions are settled. Do we have a high-confidence way to reproduce the issue? Current source shows that a protected-delivery Installation retaining the peer reaches Secret cleanup despite the chart withholding Secret list permission; no target code was executed during this review. Is this the best way to solve the issue? The existing Installation loader is the appropriate owner for rejecting this inconsistent selection, and the patch preserves the chart’s least-privilege permissions. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning medium; reviewed against 9c10e6d57133. Provenance checked
TestingProof path: in-process harness. SecurityNone. EvidenceWhat I checked:
Likely related people:
LabelsLabel changes: No label 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 HistoryReview history (1 earlier review cycle)
Reviewed October 22, 2026, 9:00 PM ET / October 23, 2026, 01:00 UTC (Revision 2). |
…d recovers The shipped installation-check script refuses an Installation that keeps the Compute broker peer without the native sender, and accepts it again once only the peer is deleted (the documented recovery). Fails on main.
|
@clawsweeper re-review |
|
🦞👀 Re-review progress:
|
Problem
Kubernetes Compute removes repository material Secrets on stop, retire and Namespace delete whenever the Installation sets
drivers.compute.configuration.network.repositoryCredentials(#3234, finding 2201). The chart grants the tenant worker Secretlistonly with HelmrepositoryCredentials.enabled, which is native broker delivery. An Installation switched from the native broker to protected OpenShell Git (or an installed sender) by followingprotected-openshell-git.md/selection.mdkept the peer: the docs said to omitcontrolSocket,publicCaPathandrepository.nativeSender, but not the peer. Deploys still worked, then every stop, retire and delete listed Secrets, got a 403 and retried forever (finding 2212).Change
drivers.compute.configuration.network.repositoryCredentialson bundled Kubernetes Compute unlessrepository.nativeSenderselects native delivery. This covers bundled protected Git, an installed sender and an Installation with norepositorysection. The chart's pre-install/pre-upgrade check runs the same loader, sohelm upgradestops before the API rolls.validateRepositoryCredentialSupportreturns early for a Sandbox with repository access; repository egress is empty there).Verification
Missing expected rejection) and pass here:tests/integration/sandbox-driver-startup.test.mjs"configured protected OpenShell Git admits only the selected execution and network policy": the protected Git Installation plus a broker peer is refused.tests/integration/configuration-startup.test.mjs"repository startup rejects unmatched ownership, ...": the peer without any repository section is refused.tests/integration/installation-change-preflight.test.mjs"the upgrade hook check refuses a repository broker peer until the operator removes it": the shippedcheck-installation.mjs(the pre-upgrade hook script) refuses the leftover peer with the exact message, then accepts the same Installation once only the peer is deleted (the documented recovery). Native delivery keeps loading with its peer: "repository startup constructs the same local resolver ..." inconfiguration-startupstill passes.taskset -c 0,1).configuration-startup35/35,sandbox-driver-startup113 pass / 1 skipped (existing skip),qa-repository-installation3/3,installation-change-preflight4/4,postgres-external-protected-git2 pass / 5 skipped (no PostgreSQL locally).tsc --build tsconfig.json tests/tsconfig.json, eslint on touched files and Prettier check: clean.repository.nativeSender(profile renderer,occ devrepository setup, examples, tests).Risks