Hybride model (PBI-86 in Scrum4Me): de worker clonet en pusht naar
Forgejo (`origin`); GitHub-PR's ontstaan via een handmatige
promote-Action in Forgejo. Variabele-namen blijven `GH_TOKEN` en
`GH_PRECLONE_REPOS` (historisch); inhoud is voortaan een Forgejo-PAT.
- Dockerfile: MCP_GIT_REPO default →
git.jp-visser.nl/janpeter/scrum4me-mcp.git
- bin/repo-bootstrap.sh: credential-helper host + clone-URL →
git.jp-visser.nl
- bin/job-prepare.sh: cache-slug comment example bijgewerkt
- .env.example: documentatie + default `GH_PRECLONE_REPOS` naar
janpeter/Scrum4Me + janpeter/scrum4me-mcp; instructies omgezet naar
Forgejo-PAT-flow; `gh pr create` (auto_pr) verwijderd uit comment.
- README.md: internet-egress, token-instructies, clone-URL en
repo-bootstrap-sectie verwijzen nu naar Forgejo. Promote-flow gelinkt.
gh CLI install blijft in Dockerfile staan (no-op zonder gh-aanroepen,
maar weinig kosten om voor ad-hoc gebruik te bewaren).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Lost terugkerende pijn op: na cross-build op Mac vergeet je makkelijk
de .env mee te nemen of vanuit de juiste directory te starten, met
"FAIL: ... is not set" als gevolg in pre-flight.
Script doet in volgorde:
1. docker buildx build --platform linux/amd64 --load
2. docker save | gzip → scrum4me-agent-runner-amd64.tar.gz
3. scp tarball + compose + (eerste keer) .env naar NAS
4. ssh: docker load + sanity-check op .env + compose up --force-recreate
5. ssh: docker compose logs -f (Ctrl-C om te stoppen)
Bestaande NAS-.env wordt niet overschreven. Eerste deploy patcht de
NAS-paden via sed. Sanity-check faalt expliciet als anthropic-,
SCRUM4ME_- of DATABASE_URL-vars ontbreken — ipv stille pre-flight-fail.
Config via .env.deploy (zit in .gitignore). Voor eerste deploy en
volledige procedure: README "Deploy — cross-build" sectie.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- docker-compose.yml + package.json: AGENT_HEALTH_PORT_HOST default
van 8080 -> 18080. QTS-webinterface bezet host-poort 8080; eerdere
default veroorzaakte een Container-Station retry-loop die de QTS-UI
onderuit haalde. Container-interne 8080 blijft ongewijzigd.
- README.md: drie nieuwe / uitgebreide secties op basis van een echte
deploy-sessie op TS-664:
* "Vereisten op de NAS" verduidelijkt dat /share/Agent een echte
QTS Shared Folder moet zijn (geen handmatige mkdir op de
16 MB /share-tmpfs).
* "Deploy - cross-build vanaf Mac" beschrijft de Apple Silicon ->
amd64 flow met buildx, docker save | gzip, scp en docker load.
* "Veelvoorkomende issues" verzamelt de gotchas: tmpfs-share,
docker not on PATH bij non-interactive ssh (source /etc/profile),
yaml control-character corruption na halve scp, en .env-loss
na rm -rf van een corrupt-tmpfs-share.
Voeg subsectie toe in "Updaten" die uitlegt dat docker compose restart
niet voldoende is bij volumes/tmpfs/ports-wijzigingen — force-recreate
is verplicht. Inclusief verify-stap met df -h /var/cache.
Fixes the 'no GitHub credentials' deadlock observed in the first
NAS-Docker batch run (2 May 2026): scrum4me-mcp's `wait_for_job`
expects a local clone at `~/Projects/<repo-name>` (convention-fallback
in resolveRepoRoot) but the container had no credentials and no clone.
Agent asked the user how to proceed; turn closed without claim.
Changes:
- `.env.example`: GH_TOKEN (fine-grained PAT, repo+PR scope) and
GH_PRECLONE_REPOS (comma-separated owner/name list, default covers
Scrum4Me + scrum4me-mcp).
- `bin/repo-bootstrap.sh` (new): runs as agent-user; configures git
credential-helper with HTTPS oauth2 token, then clones-or-fetches
each entry in GH_PRECLONE_REPOS into ~/Projects/<name>. Idempotent.
- `bin/entrypoint.sh`: hooks repo-bootstrap before run-agent.sh.
- `Dockerfile`:
- installs `gh` CLI (used for auto_pr `gh pr create`; reads GH_TOKEN
from env directly).
- pre-creates `~agent/Projects` and `~agent/.scrum4me-agent-worktrees`
so directory-ownership is right from the first boot.
- `README.md`: 'Repo bootstrap (clone-on-start)' section + GH_TOKEN
step in the deploy checklist; corrects the obsolete 'no push
credentials' note (agent now pushes feature-branches, gh creates PRs).
Same token covers clone, push and PR-creation — one secret to rotate.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>