| … | … | @@ -88,6 +88,30 @@ The staged app name must stay **`ifsrenderer`**: `pear install` derives appName |
| 88 | 88 | if absent. Every failing CI step writes to a log file and a separate always-succeeding |
| 89 | 89 | step prints it, because the runner discards output from failing steps. |
| 90 | 90 | |
| 91 | ### After you push: it will NOT appear on 7rnx.net by itself |
| 92 | |
| 93 | `https://7rnx.net/git` is load-balanced and **stortron is the active backend**; |
| 94 | the CI builds on whichever daemon you pushed to (tabertron, normally). Artifacts |
| 95 | replicate to the mirror, but as of 2026-09-05 the newest release can land there |
| 96 | complete and still render **"— no files"** with the channel pin left on the |
| 97 | previous build — so the public page advertises an old AppImage as current. |
| 98 | |
| 99 | Cause and repair are in `reference_pear-git-deploy-topology` and **pear-git-v3 |
| 100 | #18**; the one-liner, run on the ORIGIN, is: |
| 101 | |
| 102 | ```bash |
| 103 | pgh peer call http://127.0.0.1:5005/git promote-release \ |
| 104 | --json '{"repo":"ifsrenderer-linux","version":"linux-port-<sha>","toChannel":"experimental"}' |
| 105 | ``` |
| 106 | |
| 107 | **Always verify through the public URL, not localhost.** Checking |
| 108 | `127.0.0.1:5005` proves nothing about what a user sees — the two daemons gave |
| 109 | different answers for half an hour, and only the proxy's answer counts: |
| 110 | |
| 111 | ```bash |
| 112 | curl -s https://7rnx.net/git/repos/ifsrenderer-linux/releases | grep -o 'linux-port-[a-f0-9]\{7\}' | head -1 |
| 113 | ``` |
| 114 | |
| 91 | 115 | ## The animation model — read this before touching keyframes |
| 92 | 116 | |
| 93 | 117 | Five small files under `IFSEngine/Animation/`. The whole evaluator is |