feat(ploeg): let registered GitLab targets pass the readiness gate #151

Merged
ryangr0 merged 1 commit from ryangr0/ploeg-gitlab-repository-inspector into development 2026-10-03 00:25:30 +00:00 AGit
Owner

The readiness gate is built only from forges that implement
RepositoryInspector, and a target whose forge has no inspector is never
ready. The GitLab provider did not implement it, so every registered
GitLab target was refused at config load, at ingest and at claim, even
when the project was healthy.

The GitLab provider now implements InspectRepository with the Forgejo
semantics. It reads the project by its URL-encoded full path, so
subgroups work, and reports archived, pull-mirror and default-branch
state. It checks AGENTS.md on the base branch, or the default branch
when none is set, with a HEAD on the repository files API. A missing
file is a not-ready verdict; a missing project or any other forge
failure is an error, which the gate reports as unknown and retries. A
project with no default branch has no AGENTS.md. The routing how-to and
ADR-0038's history record the change.

Caveat: GitLab only returns the mirror flag to tokens with enough project access; with a low-privilege token a pull mirror reads as not a mirror.

Verified with mise run verify on the pinned toolchain (all gates passed).

Ticket: https://vikunja.webgrip.dev/tasks/1753

🤖 Generated with Claude Code

The readiness gate is built only from forges that implement RepositoryInspector, and a target whose forge has no inspector is never ready. The GitLab provider did not implement it, so every registered GitLab target was refused at config load, at ingest and at claim, even when the project was healthy. The GitLab provider now implements InspectRepository with the Forgejo semantics. It reads the project by its URL-encoded full path, so subgroups work, and reports archived, pull-mirror and default-branch state. It checks AGENTS.md on the base branch, or the default branch when none is set, with a HEAD on the repository files API. A missing file is a not-ready verdict; a missing project or any other forge failure is an error, which the gate reports as unknown and retries. A project with no default branch has no AGENTS.md. The routing how-to and ADR-0038's history record the change. Caveat: GitLab only returns the mirror flag to tokens with enough project access; with a low-privilege token a pull mirror reads as not a mirror. Verified with `mise run verify` on the pinned toolchain (all gates passed). Ticket: https://vikunja.webgrip.dev/tasks/1753 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat(ploeg): let registered GitLab targets pass the readiness gate
Some checks failed
[Workflow] On Pull Request / checks (pull_request) Has been cancelled
[Workflow] On Pull Request / warnings (pull_request) Has been cancelled
[Workflow] On Pull Request / release-policy (pull_request) Has been cancelled
58ae4d38d3
The readiness gate is built only from forges that implement
RepositoryInspector, and a target whose forge has no inspector is never
ready. The GitLab provider did not implement it, so every registered
GitLab target was refused at config load, at ingest and at claim, even
when the project was healthy.

The GitLab provider now implements InspectRepository with the Forgejo
semantics. It reads the project by its URL-encoded full path, so
subgroups work, and reports archived, pull-mirror and default-branch
state. It checks AGENTS.md on the base branch, or the default branch
when none is set, with a HEAD on the repository files API. A missing
file is a not-ready verdict; a missing project or any other forge
failure is an error, which the gate reports as unknown and retries. A
project with no default branch has no AGENTS.md. The routing how-to and
ADR-0038's history record the change.

VIK-1753

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
ryangr0 merged commit 1303bfb436 into development 2026-10-03 00:25:30 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
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
webgrip/unfold!151
No description provided.