Verify repository and CI process end to end #1
Loading…
Reference in a new issue
No description provided.
Delete branch "chore/verify-ci-process"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Process smoke test raised before any backlog work begins, to confirm the full loop is workable: push → PR → peer review → merge, plus whether Forgejo Actions has a runner.
Changes
CLAUDE.md— project guidance file, previously untracked locally..forgejo/workflows/verify-runner.yml— temporary, deliberately trivial workflow whose only job is to prove a runner picks up jobs. It is superseded by the real build/test/analyse pipeline in Vikunja task #5 and should be deleted when that lands.What this is checking
CLAUDE.md.Review outcomes actioned
runs-on: ubuntu-latestmatched no runner on this instance and left the job queued atwaiting, which would have produced a false negative. Retargeted toubuntu-24.04, matching the label other repositories on this instance use successfully.workflow_dispatchso the probe can be re-triggered without a new commit.No application code here — the solution scaffolding is Vikunja task #1 and follows once this loop is proven.
Independent review — verdict: CHANGES REQUESTED.
(Recorded as a comment review: Forgejo refuses
REQUEST_CHANGESfrom the PR author's own account — "reject your own pull is not allowed" — and the reviewing agent shares that account. Treat the verdict below as the formal one.)Judged as a bootstrap/process-verification change, not production CI — I have not asked for matrix builds, caching or test steps, which are rightly deferred to ticket #5.
The shape of this is good:
.forgejo/workflows/is the correct location for Forgejo Actions; the YAML is valid; theon:block is right, firing on every pull request and on pushes tomain; the workflow avoidsactions/checkoutand any third-party action, so it tests only the runner itself, which is exactly what a runner probe should do. The comment at the top declaring the file temporary and naming its successor is a good touch. British spellings are used correctly throughout both files ("organised", "centralised", "authorisation", "analyse").One blocking issue, and it goes to the whole point of the PR.
1.
runs-on: ubuntu-latestalmost certainly has no matching runner (.forgejo/workflows/verify-runner.yml, line 12) — blocking.The run for this PR (run #87, event
pull_request, SHA9b8b66d) has been sitting inwaitingwith a start time of the Unix epoch for the several minutes since the PR was opened — it has never been dispatched to a runner. Meanwhile every other workflow on this instance that actually executes uses a different label:Robware/api.auth→runs-on: ubuntu-24.04, latest run succeeded in 2m30sRobware/api.blog→runs-on: ubuntu-24.04rob/workflow_test→runs-on: ubuntu-24.04, ran for 2m21s before failing on its own scriptSo a runner does exist and does pick work up — it just does not advertise the
ubuntu-latestlabel. Forgejo's runner, unlike GitHub's, only offers the labels it was registered with;ubuntu-latestis a GitHub-hosted convention rather than something Forgejo provides by default.This matters more than a normal nit because the PR's stated purpose is to discover whether a runner exists. As it stands the job will queue indefinitely, and the observed result — nothing happens — is indistinguishable from "there is no runner at all". The experiment would return a false negative and the wrong conclusion would be recorded against the runner-verification ticket.
Please change line 12 to
runs-on: ubuntu-24.04to match the instance's established convention, and confirm the job actually starts before merging. Worth capturing the working label inCLAUDE.mdtoo, so ticket #5 does not rediscover this.2. Add
workflow_dispatchto the triggers — optional but useful here.For a probe whose whole job is to answer "does a runner pick this up?", being able to re-run it on demand without inventing a new commit is genuinely handy, especially if the runner turns out to be offline and is restarted later. One line under
on:.3. Minor:
#5in the workflow comment is ambiguous.Line 2 refers to "ticket #5", meaning Vikunja task 5, but this repo has its own issue tracker enabled and Forgejo reads a bare
#5as a reference to issue 5 here. Suggest "Vikunja task 5" for clarity — the same applies to#5and#1in the PR description.4. Minor:
CLAUDE.mdsays the repository is empty."No code exists yet — the repository is empty" is accurate today but stops being true the moment this merges. Not worth holding the PR for; just something to correct when the scaffolding lands.
Nothing here is a security concern. The workflow runs no untrusted input, fetches no external actions, and touches no secrets, so the usual
pull_requestprivilege worries do not apply. Apermissions:block would be good practice for the real pipeline in ticket #5, but is not warranted for a two-line probe.Fit to merge once the
runs-onlabel is corrected and the run is observed to start.Process note for the wider loop: because approval and rejection are both blocked on self-authored PRs, the "reviewer must approve before merge" step in
CLAUDE.mdcannot be satisfied through Forgejo's review state with a single account. Either create a second Forgejo account for the reviewing agent, or amendCLAUDE.mdto accept a comment-review verdict as the gate.@ -0,0 +9,4 @@jobs:verify:runs-on: ubuntu-latestubuntu-latestis a GitHub-hosted convention; Forgejo runners only offer the labels they were registered with. Every workflow on this instance that actually executes usesubuntu-24.04(Robware/api.auth,Robware/api.blog,rob/workflow_test), and this PR's run is stuck inwaiting, never dispatched. Change toubuntu-24.04, otherwise this probe returns a false negative.9b8b66de5636f6277c4eRe-review of
36f6277— verdict: APPROVED-equivalent. Fit to merge.(Recorded as a comment review because Forgejo blocks both
APPROVEDandREQUEST_CHANGESon a self-authored PR. Treat this as the formal approval for the purposes of theCLAUDE.mdreview gate.)Everything raised in the first pass has been addressed, and the blocking issue is confirmed resolved by evidence rather than inspection alone:
runs-on: ubuntu-24.04(.forgejo/workflows/verify-runner.yml, line 13) — run #88 on36f6277completed success in 22s, against run #87 onubuntu-latestwhich never leftwaitingand is now cancelled. That is a clean before/after and it answers the question the PR set out to ask: this instance has a working Actions runner, and its label isubuntu-24.04. Please record that label somewhere durable so Vikunja task #5 does not have to rediscover it.workflow_dispatchadded to theon:block — the probe can now be re-triggered without a new commit.I also checked the two things that the force-push touched but that were not part of my review:
CLAUDE.mdis byte-identical to what I reviewed (blobb893092unchanged), and both commit messages on the branch are now free of attribution trailers. The rewritten commit message on36f6277explains the runner-label change and its rationale properly — good practice for a change whose reasoning is not obvious from the diff.On my point 4, which was not actioned: I accept the pushback and withdraw it. "No code exists yet" is the operative claim and it stays true until scaffolding lands; correcting it as part of Vikunja task #1 is the right sequencing. It was a nit and I flagged it as such.
One trivial observation, not blocking and not worth another round trip: Forgejo will still auto-link the bare
#5in the PR body to issue 5 in this repository if one is ever created, since the "Vikunja task" prefix disambiguates for a human reader but not for the renderer. Inside the YAML comment it does not render at all, so that instance is entirely fine. Worth bearing in mind as a general habit once this repo's own issue tracker sees use.Nothing further from me. Merge when ready, and remember this workflow is due for deletion when the real pipeline lands in Vikunja task #5.