api: branches/create ignores expected_target_sha, so a guarded create or move can overwrite a branch
Maintainer antworten meist innerhalb von 1 Tag
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 35/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Veraltet
- Tech-Stack
- go
- Bereich
- backend-api-design
Rechercherichtung
Start with the POST /repos/branches/create decoder and the persistent and ephemeral branch creation paths, then trace the existing ref_guard_failed problem path (refGuardProblem). Add tests for all five guard cases on each of the three stores, including force with a stale guard; the issue asks to dogfood with SDK 0.1.2. Done means every case matches the documented spec and the guard prevents branch changes on failure.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Problem
Spec 5d8e1801 documents expected_target_sha on POST /repos/branches/create (and v1): 40 zeros means the branch must not exist yet, a tip value guards a move, and a failed guard answers 409 and leaves the branch alone, "even with force". SDK 0.1.1 and later send it.
open.storage has no such field and its decoder ignores unknown fields. Live on a node at 3af232d9: a forced create with a stale guard answered 200 and moved the branch, and a non-zero guard on a missing branch created it. A client that relies on the guard loses its branch tip.
Desk decision
Implement the guard exactly as the spec documents, reusing the existing ref_guard_failed problem path (refGuardProblem), on the persistent and ephemeral forms. Test every case on all three stores: zeros on a new branch, zeros on an existing branch, correct tip, stale tip, force with a stale guard. Dogfood with the real SDK 0.1.2. Not breaking (it accepts a new field).
Severity
High: silent branch overwrite for a client that sends the documented guard.
Upstream audit 2026-11-12, evidence 2026-11-12-1159UTC. Docs spec 5d8e1801 (ETag W/"8GUlAlKU8eko7Rr2", Last-Modified 2026-11-10 22:29:59 GMT). The cluster still serves ee8092bf, so this is documented drift, not a proven deployment (#234 rule: adopt what the docs publish). SDK 0.1.1 (Nov 10) and 0.1.2 (Nov 11) shipped on npm, PyPI and Go; their route list and token minting are unchanged from 0.1.0.
Generated with xum • Model: anthropic:claude-opus-5-5 • Thinking: medium
- Vorherrschende Sprache
- Go
- Sterne
- 0
- Forks
- 0
- Ø Merge
- 6 Std. 16 Min.
- Gemergte PRs (30 T.)
- 243
Entwicklungsumgebung
- Enthält ein Dockerfile oder eine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus coder/openstorage
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
coder/openstorage#807 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 49/100
coder/openstorage#806 ·
Maintainer antworten meist innerhalb von 1 Tag
-
api: merge/preview ignores strategy, squash and allow_unrelated_historiesEvtl. vergeben @ThomasK33 hat das heute übernommen. Offen
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
coder/openstorage#805 ·
Maintainer antworten meist innerhalb von 1 Tag
-
githttp: +import remote serves clone and fetch, and its pushes stay out of the normal branch listEvtl. vergeben @ThomasK33 hat das heute übernommen. Offen
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 20/100
coder/openstorage#804 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
githttp: hide ephemeral refs from the persistent remote and refuse pushes to them, as the docs sayEvtl. vergeben @ThomasK33 hat das vor 1 Tag übernommen. Offen
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
coder/openstorage#799 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in coder/openstorage
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 86/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
coder/coder-logstream-kube#255 · 1 Kommentar ·
-
kind/features
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 73/100
TencentBlueKing/bk-nodemgr#3991 ·
Maintainer antworten meist innerhalb von 1 Tag
-
meta
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
last9/last9-mcp-server#554 ·
Maintainer antworten meist innerhalb von 1 Tag