Task 1: Module scaffold, GPLv3 licence, CI on the arm64 runner #1
Labels
No labels
data-integrity
engine
platform
procurement
remote
scaffold
ui
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: Cordy/cairn-desktop#1
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Work tasks in numerical order. Read
CLAUDE.mdfirst.Goal
A Go module that builds, with CI green on the self-hosted Forgejo runner.
Files
go.mod,LICENSE,.forgejo/workflows/ci.ymlREADME.md(auto-created at repo init)Produces
Module path
cairn.ch/desktop; a CI job namedtest.Steps
go mod init cairn.ch/desktop, then pin the toolchain ingo.mod:Add the licence. Full GPLv3 text in
LICENSE, fetched from https://www.gnu.org/licenses/gpl-3.0.txt. No App Store exception here — that belongs oncairn-iosonly.Add the CI workflow at
.forgejo/workflows/ci.yml:git commit -s -m "chore: scaffold module, GPLv3 licence, CI"ciand confirm green. Read output from the runner pod — the job-log API 404s on this Forgejo version:Why the workflow looks like that
The runner executes in host mode: no Docker, no job containers, and node-based actions (
actions/checkout,actions/setup-go) do not work — hence plain-git checkout and a hand-rolled Go install. Jobs land on amd64 or arm64 despite theubuntu-latestlabel, so arch detection is mandatory. The pod persists between runs, so the Go install is skip-if-present.Acceptance criteria
go vet ./...andgo test ./...both succeed in CI with no packages to test.Signed-off-by:trailer.Cordy referenced this issue2026-09-10 17:40:26 +00:00
Done
What was built
go.mod(module cairn.ch/desktop,go 1.25, notoolchainline)LICENSEfetched from gnu.org, no App Store exception.forgejo/workflows/ci.yml, verbatim from the issue: jobtest(checkout, install Go, vet and test)command -v curl || apk add curlguard added to the install-Go step — turned out to be a no-op, the runner image already has curl (ruling R16)Tests
aae1ec2) went red atgo vet ./...: "no packages to vet" — Go 1.25.5 exits 1 on a zero-package module, so acceptance criterion 1 as literally worded cannot pass alone.6257370, arm64/linux, Go 1.25.5):go vet ./...andgo test -count=1 ./...both green, jobtestsucceeded. This is the first green run that also contains #2's arch guard package, so #1 closes on it (ledger ruling F1).Acceptance criteria
go vet ./...andgo test ./...both succeed with no packages to test" — not achievable as literally worded on Go 1.25.5, which errors on zero packages; read as "the scaffold's CI is green," met on run 2864.Signed-off-by:trailer" — met on both commits.Rulings
go 1.25, no toolchain line.git commit -s, plus Co-Authored-By trailer.aae1ec2run alone.Deferred
set -xcheckout trace but masked in runner logs; unverified go.dev tarball checksum; single-replica-runner assumptions) — accepted as-is per progress.md, not re-opened.Implemented and reviewed by Claude (subagent-driven), landed on main after review and green CI.