Skip to content

Commit a54d394

Browse files
committed
docs: open-git already stores repo visibility, it just does not send it
3.3 said nothing reports whether a repository is public. Wrong: open-git has repositories.visibility, a real column with a ('public','private') check. It is simply absent from every response that returns repositories. That makes it the cheapest item on the list rather than a feature request, so the section now says so, and records the workaround tripwire ships in the meantime along with the reason it is a poor substitute.
1 parent c29385f commit a54d394

1 file changed

Lines changed: 20 additions & 7 deletions

File tree

docs/opengit-progress.md

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ what open-git must add before tripwire works there as well as it works on
44
github. every item below is a real gap found while running tripwire against
55
open-git.com, not a guess.
66

7-
last checked: 2026-08-23, against `docs/openapi.json` (14 paths).
7+
last checked: 2026-08-23, against `docs/openapi.json` (14 paths) and a live
8+
integration on open-git.com.
89

910
---
1011

@@ -177,12 +178,24 @@ name. this works, but it is one extra call for data the event could carry.
177178

178179
### 3.3 visibility of a repository
179180

180-
**change:** add `private` to each repository
181+
**change:** add `visibility` to each repository, wherever repositories are
182+
returned: the installation response, the installation events, and the pull
183+
request payload.
181184

182-
nothing reports whether a repository is public. tripwire stores every
183-
open-git repository as private. this is the safe direction, because a public
184-
run page must not open for a repository nobody confirmed is public. it is also
185-
wrong for every public repository.
185+
**open-git already stores this.** `repositories.visibility` is a real column
186+
with a `('public','private')` check. it is simply not sent. this is the
187+
cheapest item on the list: one field on responses that already exist.
188+
189+
**what tripwire does meanwhile:** it asks for the repository page with no
190+
credentials. a 200 means public. anything else means not confirmed public.
191+
192+
that works, and it is safe in one direction only, which is why it is written
193+
that way: a private repository answers 404 to an anonymous request, so it can
194+
never be read as public.
195+
196+
it is still a guess about a fact open-git knows. it costs one request for each
197+
repository at install time, and it breaks the day an unauthenticated private
198+
repository answers 200 for any reason.
186199

187200
### 3.4 an actor on installation events
188201

@@ -219,7 +232,7 @@ a lost id needs a list.
219232
| close a pull request | test cleanup |
220233
| refs and draft flag | branch and draft rules |
221234
| names on installation events | one extra api call for each event |
222-
| repository visibility | public run pages |
235+
| repository visibility | public run pages (worked around, badly) |
223236
| actor on installation events | the audit trail |
224237
| list installations | recovery |
225238

0 commit comments

Comments
 (0)