mirror of
https://github.com/google/ax.git
synced 2026-10-02 03:14:37 +08:00
Transition the AX architecture from asynchronous event queues (Redis Streams and the `ax-controller` worker pool) to direct, synchronous reconciliation in `ax-server` guarded by fine-grained distributed locks. Key changes: - Implement per-resource locking (`lock:task`, `lock:workspace`, `lock:model`) using Redis distributed locks (`SET NX PX` with token validation) and an in-memory locker for testing. - Move Substrate reconciliation directly into `ax-server` for Task, Workspace, and Model lifecycle methods (`Create`, `Resume`, `Suspend`, `Delete`). - Decommission `ax-controller`, `deploy/ax-controller.yaml`, and Redis Stream event publishing/consuming interfaces. - Simplify `ax delete` and `ax watch` in the CLI to eliminate two-phase polling loops now that operations complete synchronously. - Update `demo.sh`, build configurations (`Makefile`, `.ko.yaml`), and documentation to reflect the single-binary control plane architecture.
805 B
805 B
Development
Prerequisites
- Go 1.27+
kofor building and deploying control plane images- Docker or Podman for the task runner image
- A Kubernetes cluster and kubeconfig
Build
make build # bin/ax, bin/ax-server
make install # install the ax CLI into $(go env GOPATH)/bin
make build-task-runner # cross-compile the runner for linux/amd64 and build its image
make push-task-runner # ...and push it (set TASK_RUNNER_REPO)
Test
Runs everything, including the mock Substrate gRPC server, in-memory store validation, and API server tests:
make test # or: go test -v ./...
Contributing
See CONTRIBUTING.md for contribution guidelines, CLA requirements, and PR workflows.