generated from coulomb/repo-seed
All checks were successful
Forge Runner Smoke / compatibility-smoke (push) Successful in 0s
224 lines
8.7 KiB
Markdown
224 lines
8.7 KiB
Markdown
# Gitea Actions Runner Evidence
|
|
|
|
Last updated: 2026-06-08
|
|
|
|
Status: haskelseed is registered as a `coulomb` organization Gitea Actions
|
|
runner and the forge smoke workflow has passed. Inter-hub now fails after runner
|
|
scheduling, so the remaining blocker is workload-specific rather than runner
|
|
visibility.
|
|
|
|
## Workstream
|
|
|
|
- Workplan: `FORGE-WP-0003-actions-runner-substrate`
|
|
- State Hub workstream: `149a0316-64d1-4664-96d0-274577c32e63`
|
|
- Immediate consumer blocker: inter-hub `R7` waits on a runner matching
|
|
`self-hosted` and `haskelseed`.
|
|
|
|
## Local Probe Results
|
|
|
|
Collected from `/home/worsch/railiance-forge` on 2026-06-07.
|
|
|
|
| Probe | Result | Note |
|
|
| --- | --- | --- |
|
|
| `curl` | available at `/usr/bin/curl` | Used for public endpoint checks. |
|
|
| `ssh` | available at `/usr/bin/ssh` | Direct `haskelseed` alias timed out; ops-bridge path reaches `root@192.168.178.135`. |
|
|
| `docker` | available at `/usr/bin/docker` | Local presence only; runner host Docker still pending. |
|
|
| `skopeo` | not available | Registry tag inspection pending. |
|
|
| local `act_runner` | not available | Haskelseed has `/usr/local/bin/act_runner`; local workstation does not. |
|
|
| `kubectl`, `helm`, `sops` | not available in `make check-tools` | Separate operator-tool gap for deploy-capable targets. |
|
|
|
|
Public endpoint checks from this environment:
|
|
|
|
Historical note: the root/API `404` results below were collected before
|
|
`FORGE-WP-0004` made `https://gitea.coulomb.social/` the standard public Gitea
|
|
web endpoint on 2026-06-13.
|
|
|
|
| Endpoint | Result | Interpretation |
|
|
| --- | --- | --- |
|
|
| `https://gitea.coulomb.social/` | HTTP `404` | Public root route is not a useful Gitea web health signal here. |
|
|
| `https://gitea.coulomb.social/api/v1/version` | HTTP `404` | Public API version route is not exposed through the current ingress path. |
|
|
| `https://gitea.coulomb.social/v2/` | HTTP `401` | OCI registry route responds with an auth challenge. |
|
|
| `https://gitea.coulomb.social/api/packages/coulomb/pypi/simple/` | HTTP `404` | Public package route reachable but package/simple root did not return an index. |
|
|
| `https://hub.coulomb.social/api/v2/hubs` | HTTP `404` | Confirms inter-hub production still lacks the expected API surface. |
|
|
|
|
Direct haskelseed alias probe:
|
|
|
|
```text
|
|
ssh -o BatchMode=yes -o ConnectTimeout=5 haskelseed hostname
|
|
```
|
|
|
|
Result:
|
|
|
|
```text
|
|
ssh: connect to host haskelseed port 22: Connection timed out
|
|
```
|
|
|
|
This does not prove the runner host is down; it proves this session does not
|
|
currently have the bare SSH alias path needed to inspect it.
|
|
|
|
Ops-bridge haskelseed path:
|
|
|
|
```bash
|
|
RUNNER_HOST=192.168.178.135 \
|
|
RUNNER_SSH_USER=root \
|
|
RUNNER_SSH_KEY=/home/worsch/.ssh/id_ops \
|
|
make runner-status
|
|
```
|
|
|
|
Observed on 2026-06-07:
|
|
|
|
| Field | Result |
|
|
| --- | --- |
|
|
| Hostname | `haskelseed.coulomb.social` |
|
|
| Kernel | `Linux 6.18.22-0-virt` on Alpine |
|
|
| `act_runner` | `/usr/local/bin/act_runner` |
|
|
| `act_runner --version` | `v0.6.1-1-g8e6b3be9` |
|
|
| `nix` | `/usr/local/bin/nix`, Determinate Nix `3.18.1`, Nix `2.33.4` |
|
|
| Init system | OpenRC (`/sbin/rc-service`) |
|
|
| `act_runner` OpenRC service | initially not present; installed and started on 2026-06-07 |
|
|
| `gitea-act-runner` OpenRC service | not present |
|
|
| live runner process | PID `5911` after activation |
|
|
| registration file | `/root/.runner`, mode `0644`, owner `root:root` |
|
|
| registration name | `haskelseed` |
|
|
| historical registration address | `http://92.205.130.254:32166` before the public NodePort was retired under `FORGE-WP-0005` |
|
|
| registration labels before activation | `haskelseed:host`, `linux:host`, `x86_64:host` |
|
|
| registration labels after activation | `self-hosted:host`, `haskelseed:host`, `linux:host`, `linux_amd64:host`, `x86_64:host`, `container-build:host`, `registry-publish:host` |
|
|
| ephemeral | `false` |
|
|
| runner backup | `/root/.runner.bak-20260607225905` |
|
|
| org registration | re-registered under the `coulomb` organization on 2026-06-08 using an attended token from the Gitea UI; token was not recorded |
|
|
| smoke workflow run | `forge-runner-smoke.yaml #4`, run `/coulomb/railiance-forge/actions/runs/4`, commit `de6178764c` |
|
|
| smoke workflow status | `Success` as of 2026-06-08 |
|
|
|
|
Activation evidence:
|
|
|
|
```text
|
|
rc-service act_runner restart
|
|
status: started
|
|
act_runner PID: 5911
|
|
runner declared successfully with labels:
|
|
self-hosted, haskelseed, linux, linux_amd64, x86_64, container-build, registry-publish
|
|
```
|
|
|
|
## Runner Inventory
|
|
|
|
Known from repo and State Hub:
|
|
|
|
- Before `FORGE-WP-0003`, this repo had runner ownership contracts but no
|
|
runner deployment files, status script, smoke workflow, or runner evidence
|
|
file.
|
|
- Inter-hub reported that commits intended to trigger deployment did not update
|
|
production and that its workflow targets `self-hosted` and `haskelseed`.
|
|
- A local registration file exists on haskelseed and `act_runner` is running as
|
|
an OpenRC service. Gitea runner admin access has not yet been used to confirm
|
|
the runner in the UI, but the daemon log reports successful declaration.
|
|
|
|
Pending attended checks:
|
|
|
|
```bash
|
|
make runner-status
|
|
|
|
RUNNER_HOST=192.168.178.135 \
|
|
RUNNER_SSH_USER=root \
|
|
RUNNER_SSH_KEY=/home/worsch/.ssh/id_ops \
|
|
make runner-status
|
|
|
|
ssh haskelseed 'hostname; command -v act_runner || true'
|
|
ssh haskelseed 'systemctl status act_runner --no-pager || systemctl status gitea-act-runner --no-pager || true'
|
|
ssh haskelseed 'journalctl -u act_runner -n 200 --no-pager || journalctl -u gitea-act-runner -n 200 --no-pager || true'
|
|
```
|
|
|
|
If Gitea runner admin access is available, verify the `coulomb` organization or
|
|
instance runner page for:
|
|
|
|
- runner name `railiance-haskelseed-build-01`;
|
|
- labels `self-hosted`, `haskelseed`, `linux`, `linux_amd64`,
|
|
`container-build`, and `registry-publish`;
|
|
- online status;
|
|
- last contact time;
|
|
- workflow ids for the smoke run and later inter-hub run.
|
|
|
|
## Registry Tag Evidence
|
|
|
|
Tag inspection remains pending because `skopeo` is unavailable in this
|
|
environment.
|
|
|
|
Run from an operator host with registry access:
|
|
|
|
```bash
|
|
for tag in 91037a4 ae9e497 fa96fb8 7cc3173 latest; do
|
|
skopeo inspect \
|
|
"docker://gitea.coulomb.social/coulomb/inter-hub:${tag}" \
|
|
--format "${tag} {{.Name}} {{.Digest}}"
|
|
done
|
|
```
|
|
|
|
Record only image names, tags, digests, and status. Do not record registry
|
|
tokens.
|
|
|
|
Haskelseed inventory on 2026-06-08:
|
|
|
|
| Tag | Result |
|
|
| --- | --- |
|
|
| `91037a4` | `manifest unknown` |
|
|
| `ae9e497` | `manifest unknown` |
|
|
| `fa96fb8` | `manifest unknown` |
|
|
| `7cc3173` | `manifest unknown` |
|
|
| `latest` | `manifest unknown` |
|
|
|
|
This means the blocked inter-hub workflow did not publish the expected image
|
|
tags to the current Gitea registry path.
|
|
|
|
## Smoke Evidence
|
|
|
|
The smoke workflow passed after haskelseed was re-registered under the `coulomb`
|
|
organization runner scope. The earlier waiting runs were caused by Gitea not
|
|
having an eligible org/repo runner record even though a local haskelseed
|
|
registration file existed.
|
|
|
|
| Field | Value |
|
|
| --- | --- |
|
|
| Date | 2026-06-08 |
|
|
| Runner name | `haskelseed` |
|
|
| Labels used | `self-hosted`, `haskelseed` |
|
|
| Workflow id/url | `/coulomb/railiance-forge/actions/runs/4` |
|
|
| Repo commit | `de6178764c` |
|
|
| Docker availability | smoke step completes; public run status is `Success` |
|
|
| Cluster credential absent | smoke workflow asserts `KUBECONFIG` is unset |
|
|
| Registry credential absent in smoke | smoke workflow asserts `REGISTRY_PASSWORD` and `GITEA_RUNNER_REGISTRATION_TOKEN` are unset |
|
|
|
|
## Inter-Hub Unblock Slot
|
|
|
|
The runner substrate is no longer the primary blocker: the forge smoke workflow
|
|
passes and Gitea can schedule jobs on haskelseed. The first inter-hub job picked
|
|
up after org registration failed, according to the authenticated UI observation
|
|
reported by the operator on 2026-06-08.
|
|
|
|
Forge reproduced the non-secret build phase on haskelseed from a committed-only
|
|
archive of inter-hub `84ee797`. The build fails before publish/deploy:
|
|
|
|
```text
|
|
Web/Controller/Api/V2/Annotations.hs:20:23: error: GHC-87543
|
|
Ambiguous occurrence `createAnnotation`.
|
|
It could refer to Generated.Types.createAnnotation
|
|
or Web.Controller.Api.V2.Annotations.createAnnotation.
|
|
|
|
Web/Controller/Api/V2/Annotations.hs:29:42: error: GHC-87543
|
|
Ambiguous occurrence `createAnnotation`.
|
|
```
|
|
|
|
Registry inspection from haskelseed still reports `manifest unknown` for
|
|
`84ee797`, `7cc3173`, `fa96fb8`, and `latest`, matching a failure before or
|
|
during publish. Since the reproduced failure happens in `nix build .#docker`,
|
|
the next fix belongs in the inter-hub source repo.
|
|
|
|
Expected evidence after inter-hub rerun:
|
|
|
|
| Field | Value |
|
|
| --- | --- |
|
|
| Inter-hub commit | `TODO` |
|
|
| Workflow id/url | `TODO` |
|
|
| Image tag/digest | `TODO` |
|
|
| Deployment result | failed before image publish/deploy |
|
|
| `https://hub.coulomb.social/api/v2/hubs` | still old surface; no new image tag deployed |
|
|
| Remaining blocker | fix inter-hub GHC ambiguity in `Web/Controller/Api/V2/Annotations.hs` |
|