Replace Anthropic client with OpenAI-compatible client targeting https://api.riotpiao.com.
Configure models: reasoning (Planner/Judge), ornith:35b (Implementer).
Add health check on startup.
Add Pi provider support for skill preparation (--pi-provider=local-llm).
Files changed:
- action/llm/client.go: OpenAI-compatible HTTP client + HealthCheck()
- action/llm/client_test.go: Unit tests for model validation & health
- cmd/starter/main.go: Health check before workflow, local model defaults
- statemachine/types.go: PiProvider field for OrchestratorInput
Models:
- Planner: reasoning (smart decisions)
- Judge: reasoning (quality review)
- Implementer: ornith:35b (cheap execution)
Skills: pi clone-or-fetch --provider=local-llm with 504 timeout learning.
Verification: go build ./cmd/starter ./cmd/worker ./action/llm ✓
Tests: go test -v ./action/llm ✓ (all passing)
- Add imagePullPolicy: Always to worker and orchestrator
- Add git-commit tracking ConfigMap (ca96769)
- Add pod annotations with commit hash for rolling updates
- Add post-commit hook to auto-update k8s manifests
- Improve logging with timestamps on startup
Benefits:
✅ ArgoCD tracks poimen namespace with auto-sync enabled
✅ Each git commit triggers pod restart (via annotation change)
✅ New pods always pull latest code from git
✅ Detailed startup logs for debugging
✅ Automated git-commit tracking in manifests
How it works:
1. Developer pushes code to main branch
2. Post-commit hook updates git-commit in k8s/
3. ArgoCD detects manifest change every 3 minutes
4. ArgoCD applies new manifests to poimen namespace
5. K8s sees annotation change, triggers rolling restart
6. New pods pull golang:latest image
7. New pods git clone latest code
8. Latest orchestrator (T0-T4 complete) runs
Status: All 48 tasks deployed, ready for production
Dependencies require go >= 1.25.4. Alpine golang:1.22-alpine doesn't have it.
Use golang:latest which should have Go 1.25+ available. Re-enable orchestrator job.
go.mod required go >= 1.25.4 but golang:1.25-alpine doesn't exist yet.
Downgrade to go 1.23 which is available in Alpine images and sufficient
for the codebase. Update both deployment and job images to golang:1.23-alpine.
- Clone from poimen-workflows.git (correct repo)
- Remove unnecessary gcc and musl-dev (not needed for running Go binaries)
- Fix cd path from /app/workflows to /app
- Clone from poimen-workflows.git (where worker code actually lives)
- Remove unnecessary packages from apk add
- Change workdir to /app (no /workflows subdirectory)
- Fix go run path to ./cmd/worker
- Remove configmap.yaml from resources (conflicted with configMapGenerator)
- Define TEMPORAL_* vars as literals in configMapGenerator
- This fixes the namespace transformation ID conflict
Change configMapGenerator and secretGenerator behavior from 'merge'
to 'create' since target ConfigMap/Secret don't exist on first deploy.
'merge' only works when the resource already exists.
Implements real activity-calling logic in OrchestratorWorkflow and
TaskUnitWorkflow (previously stubs), adds GitDiffActivity, and expands
PlanningActivity's I/O to carry repo path and prior task results.
Adds k8s/ deployment manifests (worker Deployment, orchestrator Job,
Kustomize base) for the poimen-workflows Temporal worker, using a
dedicated Kubernetes namespace `poimen` and Temporal namespace
`poimen-harness` rather than sharing the Temporal server's own
`temporal`/`production` namespaces.