1d75bf9b25ea9ae7f078aa5a21d94f92ab97b3ae
act interpolates a `run:` block INCLUDING its shell comments, so prose containing Actions expression syntax is evaluated as an expression. A comment I added yesterday explaining why a fallback was computed in shell contained that syntax as an example; act tried to evaluate it, failed with "Unavailable context: a", and the step then wrote NO outputs at all. In gitea-mcp that emptied `needs.build.outputs.image-tag`, so its deploy job committed `image: localhost:5000/gitea-mcp:` to the infra repo -- which is not valid YAML, so Flux's apps Kustomization went Ready:False and NOTHING in k3s/apps reconciled estate-wide until infra 51ceb7c. The build still went green throughout, because the shared build-image.sh falls back to `git rev-parse --short HEAD` when SHA_TAG is empty. A robust default hid a broken input -- worth remembering as a pattern. Same comment text removed here; the explanation stays, the syntax does not. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011PL5XcG68SvQqz3vGVbWbf
gitea-mcp
Streamable HTTP MCP service exposing Gitea repo operations to Claude apps.
See ~/dev/AI/infra/docs/superpowers/specs/2026-05-04-gitea-mcp-gitops-workflow-design.md.
Quickstart
task setup:hooks # installs .githooks/pre-push — runs task check before every push
task check # context sync + lint + test + vet
task build # produces bin/gitea-mcp
This repo uses Trunk-Based Development. Commit directly to main. The pre-push
hook enforces the quality gate locally; CI re-runs task check on every push.
Languages
Go
97.9%
Shell
1.9%
Dockerfile
0.2%