CONTRIBUTING's required path (Forgejo issue + PR) is impossible for outsiders: registration is disabled and the GitHub mirror is read-only #481

Closed
opened 2026-07-01 22:51:32 +00:00 by coilyco-ops · 3 comments
Member

Why

Persona oss-agent-power-user / angle docs-ia. This persona reads LICENSE and CONTRIBUTING because they are deciding whether to invest in an ecosystem, not just install a tool. Trail: repo description + topics (external-contributor-repo-wrapper) → LICENSE (MIT — clean) → CONTRIBUTING.md.

CONTRIBUTING's required process cannot be completed by any external person today:

  1. Step 1: "Open an issue first. Every commit in this repo closes a same-repo issue (closes #N …)". Same-repo means the canonical Forgejo tracker — but https://forgejo.coilysiren.me/user/sign_up says, verbatim, "Registration is disabled." An outsider cannot open the issue the process requires.
  2. The PR itself: AGENTS.md calls GitHub "the read-only GitHub mirror", so a GitHub fork-and-PR has no documented standing; a Forgejo PR needs the account that cannot be created.
  3. The README's Support link routes to the GitHub tracker (#438), whose issue numbers do not satisfy the same-repo closes #N convention CONTRIBUTING states.

CONTRIBUTING never mentions accounts, forks, where an external PR should land, or that the canonical instance is closed-registration. Meanwhile the GitHub mirror's own description positions ward as "Generic-purpose cli-guard consumer for repos with external contributors". The persona's conclusion after five minutes: the project says it wants external contributors and structurally cannot accept one — which reads as either an oversight or a sign the "public release" is nominal.

Related: #209 (contribution guide placeholder — this is the concrete gap it needs to cover), #438 (support-split), #414 (github equivalents anchor).

Deliverable

CONTRIBUTING states the actual external-contribution path end to end: where an outsider files the issue (and how it becomes the closes #N target), where the PR goes, and how (or whether) they get a Forgejo account — or states plainly that code contributions are currently maintainer-only, so nobody burns an evening discovering it.

Done condition

A stranger with only a GitHub account can follow CONTRIBUTING from "I found a bug and wrote a fix" to a submitted change (or an explicit "not accepted yet") without hitting a disabled sign-up page or an undocumented dead end.


Severity: adoption-fatal · persona: oss-agent-power-user · angle: docs-ia
Filed by Claude Code during a cold-read release pressure test (run 33).

## Why Persona `oss-agent-power-user` / angle `docs-ia`. This persona reads LICENSE and CONTRIBUTING because they are deciding whether to invest in an ecosystem, not just install a tool. Trail: repo description + topics (`external-contributor-repo-wrapper`) → LICENSE (MIT — clean) → CONTRIBUTING.md. CONTRIBUTING's required process cannot be completed by any external person today: 1. Step 1: "**Open an issue first.** Every commit in this repo closes a same-repo issue (`closes #N` …)". Same-repo means the canonical Forgejo tracker — but `https://forgejo.coilysiren.me/user/sign_up` says, verbatim, **"Registration is disabled."** An outsider cannot open the issue the process requires. 2. The PR itself: AGENTS.md calls GitHub "the read-only GitHub mirror", so a GitHub fork-and-PR has no documented standing; a Forgejo PR needs the account that cannot be created. 3. The README's Support link routes to the GitHub tracker (#438), whose issue numbers do not satisfy the same-repo `closes #N` convention CONTRIBUTING states. CONTRIBUTING never mentions accounts, forks, where an external PR should land, or that the canonical instance is closed-registration. Meanwhile the GitHub mirror's own description positions ward as "Generic-purpose cli-guard consumer **for repos with external contributors**". The persona's conclusion after five minutes: the project says it wants external contributors and structurally cannot accept one — which reads as either an oversight or a sign the "public release" is nominal. Related: #209 (contribution guide placeholder — this is the concrete gap it needs to cover), #438 (support-split), #414 (github equivalents anchor). ## Deliverable CONTRIBUTING states the actual external-contribution path end to end: where an outsider files the issue (and how it becomes the `closes #N` target), where the PR goes, and how (or whether) they get a Forgejo account — or states plainly that code contributions are currently maintainer-only, so nobody burns an evening discovering it. ## Done condition A stranger with only a GitHub account can follow CONTRIBUTING from "I found a bug and wrote a fix" to a submitted change (or an explicit "not accepted yet") without hitting a disabled sign-up page or an undocumented dead end. --- **Severity: adoption-fatal** · persona: oss-agent-power-user · angle: docs-ia Filed by Claude Code during a cold-read release pressure test (run 33).
coilyco-ops added this to the ward launch milestone 2026-07-01 23:29:24 +00:00
Author
Member

DECISION - rewrite CONTRIBUTING for the GitHub front door: outsiders file issues on GitHub and open PRs against the mirror; a maintainer (or warded agent) carries accepted PRs to the canonical Forgejo repo; the same-repo 'closes #N' convention is an internal mechanic, not an external requirement. State plainly that Forgejo registration is closed. Recorded by Claude Code (Fable) during the 2026-07-01 ward launch triage session with Kai.

DECISION - rewrite CONTRIBUTING for the GitHub front door: outsiders file issues on GitHub and open PRs against the mirror; a maintainer (or warded agent) carries accepted PRs to the canonical Forgejo repo; the same-repo 'closes #N' convention is an internal mechanic, not an external requirement. State plainly that Forgejo registration is closed. Recorded by Claude Code (Fable) during the 2026-07-01 ward launch triage session with Kai.
Author
Member

🔒 Reserved by ward agent --driver claude — container engineer-claude-ward-481 on host kais-macbook-pro-2.local is carrying this issue (reserved 2026-07-02T02:40:13Z). Concurrent ward agent runs are blocked until it finishes or the reservation goes stale (2h0m0s TTL); --force overrides.

— Claude (she/her), via ward agent

<!-- ward-agent-reservation --> 🔒 Reserved by `ward agent --driver claude` — container `engineer-claude-ward-481` on host `kais-macbook-pro-2.local` is carrying this issue (reserved 2026-07-02T02:40:13Z). Concurrent `ward agent` runs are blocked until it finishes or the reservation goes stale (2h0m0s TTL); `--force` overrides. <!-- ward-agent-signature --> — Claude (she/her), via `ward agent`
Owner

WARD-OUTCOME: done - CONTRIBUTING now documents the GitHub-mirror front door end to end, with Forgejo's closed registration stated plainly.

This one was almost entirely a judgment call rather than a coding problem, and the maintainer's DECISION comment did the hard part for me: file issues and PRs on the GitHub mirror, a maintainer or warded agent carries an accepted change onto canonical Forgejo, and closes #N is an internal mechanic outsiders never touch. My job was to say that clearly and honestly, including the blunt "Forgejo registration is closed, that is expected" line the persona needed.

The thing that actually fought back was the 4000-char doc-size cap. My first draft blew past it, and I spent several rounds trimming prose down to exactly 4000. To make room I split the Go-workspace walkthrough into docs/workspace.md, which I think is a net improvement anyway since CONTRIBUTING now stays about the contribution process. One rough edge: the file sits at the cap exactly, so the next edit will trip the hook and force another trim or split. Worth watching.

Confidence is high on the done-condition (a stranger with only a GitHub account can follow it without hitting a dead end). Possible follow-up: the README Support link already routes to the GitHub tracker, which is now consistent with this model, but #438's support-split may want a matching pointer from README into this new section.

WARD-OUTCOME: done - CONTRIBUTING now documents the GitHub-mirror front door end to end, with Forgejo's closed registration stated plainly. This one was almost entirely a judgment call rather than a coding problem, and the maintainer's DECISION comment did the hard part for me: file issues and PRs on the GitHub mirror, a maintainer or warded agent carries an accepted change onto canonical Forgejo, and `closes #N` is an internal mechanic outsiders never touch. My job was to say that clearly and honestly, including the blunt "Forgejo registration is closed, that is expected" line the persona needed. The thing that actually fought back was the 4000-char doc-size cap. My first draft blew past it, and I spent several rounds trimming prose down to exactly 4000. To make room I split the Go-workspace walkthrough into `docs/workspace.md`, which I think is a net improvement anyway since CONTRIBUTING now stays about the contribution process. One rough edge: the file sits at the cap exactly, so the next edit will trip the hook and force another trim or split. Worth watching. Confidence is high on the done-condition (a stranger with only a GitHub account can follow it without hitting a dead end). Possible follow-up: the README Support link already routes to the GitHub tracker, which is now consistent with this model, but #438's support-split may want a matching pointer from README into this new section.
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
coilyco-flight-deck/ward#481
No description provided.