- Python 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
|
||
| .forgejo/workflows | ||
| actions/setup-transducer | ||
| tools | ||
| .gitignore | ||
| AGENTS.md | ||
| CLAUDE.md | ||
| compatibility.json | ||
| README.md | ||
| TODO.md | ||
| VERSION | ||
Governor
Governor owns Homeostat's reusable Forgejo workflows and thin Actions. It receives Forgejo events, runs deterministic control work on normal runners, dispatches schema-bound AI calls to the matching provider runner, and returns typed results to the graph.
Confirmed default runner labels:
| Work | Label |
|---|---|
| Controller, schema, build, test, package | self-hosted |
| Claude provider invocation | claude-code |
| Codex provider invocation | codex-cli |
Provider runners are container based. Each invocation spawns an operator
container with the provider CLI installed and already authenticated from
credentials shared in by the base runner. Governor passes no provider
credentials; claude-bin and codex-bin name binaries resolved from the
operator's PATH.
actuate.yaml is the reusable actuation boundary. It:
- checks out the repository owning the invocation artifact and, when different, the controller repository owning its policy authority;
- installs a checksum-pinned Transducer wheel;
- retrieves the pinned Protocol schemas;
- validates the invocation before provider execution;
- runs Claude or Codex on its provider runner;
- maintains the Forgejo issue conversation;
- emits redacted debug output and OTLP telemetry; and
- uploads the typed result/debug envelope for the next deterministic cycle.
feedback.yaml interprets typed continuations on self-hosted, reserves every
ready child before retiring its parent, and dispatches each child to the thin
homeostat-actuate.yaml workflow in the repository that owns its artifact.
Independent matrix entries remain unrestricted; dependency-blocked entries
stay in the root ledger until their prerequisite branches and descendants are
terminal. Target repositories check out and push themselves while the
controller repository continues to own sensed intent, policy, and feedback.
Forgejo 16 requires cross-repository reusable workflows to come from a public
target repository. The initial governor repository must therefore be public,
or consumers must vendor the thin workflows instead.
Validate with python3 tools/validate.py.