GitHub-style runner: research and author the design plan in docs/ (no implementation until reviewed) #288
Labels
No labels
actions
bug
cli
duplicate
enhancement
fork
forum
git storage
help wanted
insights
invalid
issues
moderation
oidc
ownership transfer
packages
pr/merge protection rules
projects
pull requests
question
releases
sponsorships
tags
webhooks
wiki
wontfix
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
crueber/walhub#288
Loading…
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?
What's requested
Produce a researched design plan for a GitHub-Actions-style runner system in walhub: builds and jobs that execute as part of walhub, reported into the existing checks/statuses surface. The deliverable of this ticket is documentation only — a plan in
docs/. No implementation. Nothing gets built until Chris reviews the plan.Context (what exists that the plan must build on)
internal/checksimplements the commit-status model: external CIPOSTs per-commit results (POST …/api/checks/statuses/{sha},wct_CI-token auth), the CAS'd checks index feeds the PR merge gating and the/checksUI. There is no execution anywhere — walhub reports what external runners did.docs/features/11_mirror.md, with numbered decision sections (R1 (a)/(b) markers), status header linking the Forgejo issue, and "plan revision is normative on conflict."docs/features/NN_name.md(next number is 12); architecture/design detail indocs/go/(the 17-numbered series); dependency budget is LAW (AGENTS.mdlaw 1: backend = chi, BurntSushi/toml, x/net only — the plan must work within this or explicitly propose an amendment with rationale); Make is the only task runner;go test≥95% per-package gate; everything persists in the object store (no external DB).internal/wal/tasks.go— narrated long work with(repo,kind)single-flight), the WAL engine, bundles/maintenance scheduling (internal/maintain— an existing loop goroutine pattern), egress rules (internal/egress— SSRF posture for outbound runner traffic), and SSH transport (internal/sshd).The plan must research and decide (numbered decision sections, mirror-doc style)
.walhub/*.ymlin-repo? store-side config?), trigger model (push, PR, manual, schedule — note the mirror-schedule machinery ininternal/mirroras prior art), matrix/strategy scope for v1.wct_shape?; secrets storage — the object-store-only constraint makes secret management a real design problem, don't hand-wave it).internal/checksReportInput with a richer check model — annotations, logs, steps — or version the API); log streaming (SSE envelope per 07 §9.3); artifacts (store layout, retention, size caps); UI (repo Checks tab extension, run/job detail pages).scrubURL/scrubErrorprecedent), abuse caps (max concurrent, max runtime, max bytes — the import[import]bounds section is the pattern), and what happens on the multi-instance placement model.Constraints for the author
15_testing.md.internal/, or start any code. Stop at the reviewed plan.Acceptance criteria
docs/features/12_runner.md(ordocs/go/18_runner.mdif the author judges it architecture-not-feature) contains the full researched plan with numbered decision sections, prior-art citations, and rollout slices.Design plan ready for review: PR #304 (branch docs/issue-288) — docs/features/12_runner.md (DRAFT, D1–D8 + R1/R2/R3 slices, open questions Q1–Q6 for Chris). Docs only, no implementation. Please review the plan there; this PR must not merge until the plan is approved.
PR #304 review (DOC-ONLY plan for #288) — findings:
VERIFICATION
6f88bdf(scratch worktree, main untouched): header D1-D9 corrected to D1-D8 (only D1-D8 exist); Q6 (YAML-vs-TOML) lived only in section 10, now cross-referenced in the section 9 open-questions list.LAW COMPLIANCE (of the PROPOSED design)
PLAN COHERENCE
MERGE RECOMMENDATION: ready to merge (as DRAFT plan doc; implementation stays gated on #288 approval per the doc's own marker). No structural blockers; remaining items (secretbox parenthetical one-liner, Q-answers) belong to implementation planning, not this doc.
Plan landed in PR #304 (review clean; implementation gated on plan approval per the doc marker). Closing the planning ticket — implementation to follow on approval.