In plain English: Rune automation now talks to the forge next door, not around the world
What is this about: The forge (Gitea) moved from the Raspberry Pi to the PC. Automation on the PC now uses the direct local address instead of going out through the internet and back in through the Pi.
Why do we need it: Every API call used to cost ~100ms through the Pi; the local path costs ~2ms. Over hundreds of calls per CI run and every async authority check, that adds up.
Why is it still open: Not started at PR creation — this PR is also the live proof that CI runs on the migrated stack.
What would let us close this
Custodian automation uses the internal endpoint by default (GITEA_URL env still overrides)
This PR's CI runs green on the migrated stack (PC runner for tests, Pi runner for infra labels)
Version impact
patch — same behaviour, faster
Technical details
Migration evidence: Pi gitea stopped (rollback intact), 639MB forge synced to /mnt/workdrive/gitea (NVMe), binary 1.27.3 x86_64, systemd unit, runners repointed, Pi Caddy -> 192.168.1.156:3000, ufw LAN-scoped allow for 3000, hook 2 -> 127.0.0.1:8791 (event path now fully PC-local)
# In plain English: Rune automation now talks to the forge next door, not around the world
**What is this about:** The forge (Gitea) moved from the Raspberry Pi to the PC. Automation on the PC now uses the direct local address instead of going out through the internet and back in through the Pi.
**Why do we need it:** Every API call used to cost ~100ms through the Pi; the local path costs ~2ms. Over hundreds of calls per CI run and every async authority check, that adds up.
**Why is it still open:** Not started at PR creation — this PR is also the live proof that CI runs on the migrated stack.
# What would let us close this
- [ ] Custodian automation uses the internal endpoint by default (GITEA_URL env still overrides)
- [ ] This PR's CI runs green on the migrated stack (PC runner for tests, Pi runner for infra labels)
# Version impact
- [x] patch — same behaviour, faster
# Technical details
- Migration evidence: Pi gitea stopped (rollback intact), 639MB forge synced to /mnt/workdrive/gitea (NVMe), binary 1.27.3 x86_64, systemd unit, runners repointed, Pi Caddy -> 192.168.1.156:3000, ufw LAN-scoped allow for 3000, hook 2 -> 127.0.0.1:8791 (event path now fully PC-local)
Topology reconciliation 2026-09-19: Gitea migrated Pi->PC. PC automation
uses the internal endpoint (no public DNS / Pi proxy round trip). External
endpoint unchanged for humans: https://gitea.thingscouldgetdicey.online
(Pi Caddy -> PC:3000). GITEA_URL env still overrides.
🤖Headless spec gate (non-blocking, #204 first slice)
Spec-gate agent produced no text output — check runner logs.
Deterministic floors still govern the merge
This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.
🤖 **Headless spec gate (non-blocking, #204 first slice)**
Spec-gate agent produced no text output — check runner logs.
<details><summary>Deterministic floors still govern the merge</summary>
This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.</details>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
In plain English: Rune automation now talks to the forge next door, not around the world
What is this about: The forge (Gitea) moved from the Raspberry Pi to the PC. Automation on the PC now uses the direct local address instead of going out through the internet and back in through the Pi.
Why do we need it: Every API call used to cost ~100ms through the Pi; the local path costs ~2ms. Over hundreds of calls per CI run and every async authority check, that adds up.
Why is it still open: Not started at PR creation — this PR is also the live proof that CI runs on the migrated stack.
What would let us close this
Version impact
Technical details
🤖 Headless spec gate (non-blocking, #204 first slice)
Spec-gate agent produced no text output — check runner logs.
Deterministic floors still govern the merge
This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.