Skip to content

Build separate python image for antigravity harness - #305

Merged
wjjclaud merged 2 commits into
mainfrom
separate-container
Jul 16, 2026
Merged

Build separate python image for antigravity harness#305
wjjclaud merged 2 commits into
mainfrom
separate-container

Conversation

@wjjclaud

Copy link
Copy Markdown
Collaborator

Split the single combined ax image into two images:

  • ax — Used by the ax-server and the Go interactions harness.
  • ax-antigravity — Used by the antigravity harness built with python SDK.

The resumption time of interactions actor reduce from ~800ms to ~500ms with the removed python dependencies. The resumption time of the antigravity python actor doesn't change much.

Tested

Deployed on substrate and run with both antigravity and antigravity-interactions.
Antigravity actor resume: ~1.6s
Interactions actor resume: ~500ms

@wjjclaud
wjjclaud requested a review from rakyll July 14, 2026 20:01
Comment thread cmd/ax/Dockerfile
@wjjclaud
wjjclaud merged commit 67556e3 into main Jul 16, 2026
9 checks passed
rakyll pushed a commit that referenced this pull request Jul 21, 2026
…#305)

## Summary

`skills.NewExecutor` returned `io.EOF` to signal that the skills
directory was scanned successfully but contained no `SKILL.md` files.
Two callers (`NewSkillsTool` in `gemini.go`, `NewGeminiPlannerAgent` in
`gemini_planner.go`) checked this with `err == io.EOF` or
`errors.Is(err, io.EOF)` to decide whether to fall back to a no-op tool.

`io.EOF` is surprising in this context — the caller has no stream and no
end-of-input semantics, just an empty directory. A reader hitting this
code has to look up what `io.EOF` means here, and any future code that
wraps the error could accidentally make the comparison brittle.

## Change

Define a package-level sentinel:

```go
var ErrNoSkills = errors.New("no skills found")
```

Return it from `NewExecutor` when `len(found) == 0`, and update both
callers to use `errors.Is(err, skills.ErrNoSkills)`. The `io` import is
no longer needed in either gemini file.

## Type of Change

- [ ] Bug fix
- [ ] New feature
- [x] Refactor
- [ ] Documentation
- [ ] Breaking change

## Testing

- New unit tests `TestNewExecutor_NoSkills` and
`TestNewExecutor_WithSkills` cover both branches.
- `go build ./...` clean.
- `go test ./...` passes (in particular the gemini package, since both
call sites changed).
rakyll pushed a commit that referenced this pull request Jul 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants