Canonical Forgejo repo and GitHub mirror disagree on what ward is, and README routes support to the mirror without explanation #438

Closed
opened 2026-07-01 21:47:33 +00:00 by coilyco-ops · 5 comments
Member

Why

Persona: the-agent-itself (cold read, verifying README claims read-only). The repo's identity and support path fork between forges:

  • Forgejo (canonical) description: "Harness driver: sends an AI agent harness (claude/goose/codex/qwen) into ephemeral containers to carry Forgejo issues end to end…". GitHub mirror description: "Generic-purpose cli-guard consumer for repos with external contributors." Two different value propositions; a GitHub arrival reads a divergent one-liner. (Repo descriptions don't ride mirror-to-github.yml, so they drift silently.)
  • The README Support section sends "create a new issue" to github.com/coilyco-flight-deck/ward/issues/new/choose. Issues are enabled there (0 open) while the canonical tracker with ~118 open issues is on Forgejo — and AGENTS.md calls GitHub "the read-only GitHub mirror". Nothing tells a visitor which tracker warded engineers actually watch, or why the Forgejo README exports its bug reports to GitHub.

A newcomer can technically file feedback, but the two surfaces disagree about what ward is and where its front door is — exactly the framing-gap class this sweep hunts.

Deliverable

State the public support channel in the README in one sentence ("canonical development happens on Forgejo; public issues go to X because Y"), and sync the GitHub mirror description to the canonical one — ideally automated alongside mirror-to-github.yml so it cannot drift again.

Done condition

Both forges show the same one-line description; the README says explicitly which tracker to use and why; a cold reader can name the canonical forge without opening AGENTS.md. (Anchor: #414 carries the broader github-parity story; this is the narrow identity/support slice, independently dispatchable.)


Severity: major-friction · persona: the-agent-itself · angle: yaml-config
Filed by Claude Code during a cold-read release pressure test (run 2).

## Why Persona: `the-agent-itself` (cold read, verifying README claims read-only). The repo's identity and support path fork between forges: - Forgejo (canonical) description: "Harness driver: sends an AI agent harness (claude/goose/codex/qwen) into ephemeral containers to carry Forgejo issues end to end…". GitHub mirror description: "Generic-purpose cli-guard consumer for repos with external contributors." Two different value propositions; a GitHub arrival reads a divergent one-liner. (Repo descriptions don't ride `mirror-to-github.yml`, so they drift silently.) - The README Support section sends "create a new issue" to `github.com/coilyco-flight-deck/ward/issues/new/choose`. Issues are enabled there (0 open) while the canonical tracker with ~118 open issues is on Forgejo — and AGENTS.md calls GitHub "the read-only GitHub mirror". Nothing tells a visitor which tracker warded engineers actually watch, or why the Forgejo README exports its bug reports to GitHub. A newcomer can technically file feedback, but the two surfaces disagree about what ward is and where its front door is — exactly the framing-gap class this sweep hunts. ## Deliverable State the public support channel in the README in one sentence ("canonical development happens on Forgejo; public issues go to X because Y"), and sync the GitHub mirror description to the canonical one — ideally automated alongside `mirror-to-github.yml` so it cannot drift again. ## Done condition Both forges show the same one-line description; the README says explicitly which tracker to use and why; a cold reader can name the canonical forge without opening AGENTS.md. (Anchor: #414 carries the broader github-parity story; this is the narrow identity/support slice, independently dispatchable.) --- **Severity: major-friction** · persona: the-agent-itself · angle: yaml-config Filed by Claude Code during a cold-read release pressure test (run 2).
Author
Member

+1 — independently hit via the-agent-itself/docs-ia, run 8.

+1 — independently hit via the-agent-itself/docs-ia, run 8.
Author
Member

+1 — independently hit via github-only-dev/release-story, run 32: descriptions still diverge as of 2026-07-01 (Forgejo 'Harness driver…' vs GitHub 'Generic-purpose cli-guard consumer for repos with external contributors').

+1 — independently hit via github-only-dev/release-story, run 32: descriptions still diverge as of 2026-07-01 (Forgejo 'Harness driver…' vs GitHub 'Generic-purpose cli-guard consumer for repos with external contributors').
coilyco-ops added this to the ward launch milestone 2026-07-01 23:29:40 +00:00
Author
Member

DECISION - GitHub is the public front door: GitHub mirror hosts issues (and external PRs, carried to Forgejo by a maintainer/agent per #481); README support routes to GitHub; descriptions/topics synced (#490); the mirror relationship explained in contributor-facing docs, not the README. External copy is GitHub-only per #461's decision. Recorded by Claude Code (Fable) during the 2026-07-01 ward launch triage session with Kai.

DECISION - GitHub is the public front door: GitHub mirror hosts issues (and external PRs, carried to Forgejo by a maintainer/agent per #481); README support routes to GitHub; descriptions/topics synced (#490); the mirror relationship explained in contributor-facing docs, not the README. External copy is GitHub-only per #461's decision. 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-438 on host kais-macbook-pro-2.local is carrying this issue (reserved 2026-07-02T03:09:20Z). 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-438` on host `kais-macbook-pro-2.local` is carrying this issue (reserved 2026-07-02T03:09:20Z). 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 - README Support section now names Forgejo as canonical and explains why public issues route to the GitHub mirror; description sync was already automated on main.

Retrospective: this one was mostly archaeology, not authoring. The description-drift half was already solved before I arrived - a prior run (ward#490) had wired the "Sync repo description and topics to GitHub" step into mirror-to-github.yml, pulling canonical values from the Forgejo API on every push, so my merge just re-triggered it. The real remaining slice was tiny: the README Support line routed newcomers to GitHub with zero explanation of which tracker is canonical or why, so a cold reader had to open AGENTS.md to learn Forgejo is home.

What fought back a little was the tension between the decision comment ("explain the mirror relationship in contributor docs rather than the README") and the done condition ("the README says explicitly which tracker to use and why"). I read those as complementary, not contradictory: one concise README sentence naming the canonical forge and the reason, plus a pointer to CONTRIBUTING.md which already carries the full flow. Confident in the result - it's a small, self-contained doc edit, pre-commit is green, and the push lands the description re-sync automatically. No follow-ups worth filing; the broader github-parity story stays at #414.

WARD-OUTCOME: done - README Support section now names Forgejo as canonical and explains why public issues route to the GitHub mirror; description sync was already automated on main. Retrospective: this one was mostly archaeology, not authoring. The description-drift half was already solved before I arrived - a prior run (ward#490) had wired the "Sync repo description and topics to GitHub" step into mirror-to-github.yml, pulling canonical values from the Forgejo API on every push, so my merge just re-triggered it. The real remaining slice was tiny: the README Support line routed newcomers to GitHub with zero explanation of which tracker is canonical or why, so a cold reader had to open AGENTS.md to learn Forgejo is home. What fought back a little was the tension between the decision comment ("explain the mirror relationship in contributor docs rather than the README") and the done condition ("the README says explicitly which tracker to use and why"). I read those as complementary, not contradictory: one concise README sentence naming the canonical forge and the reason, plus a pointer to CONTRIBUTING.md which already carries the full flow. Confident in the result - it's a small, self-contained doc edit, pre-commit is green, and the push lands the description re-sync automatically. No follow-ups worth filing; the broader github-parity story stays at #414.
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#438
No description provided.