feat: AX v0.8.0 upgrade — Core features + quality gates #21
No reviewers
Labels
No labels
needs-review
needs-review
needs-review
needs-review
needs-review
athena
athena-gemini
audit
clotho
clotho-gemini
codex
darbs-claude
security
wiki
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: core/agent#21
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/ax-v080-upgrade"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Test plan
go test ./...— all passgo build ./cmd/core-agent/— compiles🤖 Generated with Claude Code
Co-Authored-By: Virgil virgil@lethean.io
- Section 14: String operations — Println, Sprintf, Concat, Path, Contains, Split, Trim - Section 15: AX Principle 2 — every exported function needs usage-example comment - Section 16: Example tests — one {source}_example_test.go per source file - Section 17: Quality gates — all 10 disallowed imports + string concat check The next session agent loads this RFC and knows exactly what v0.8.0 looks like. Co-Authored-By: Virgil <virgil@lethean.io>go-process: - Register factory, Result lifecycle, 5 named Action handlers - Start/Run/StartWithOptions/RunWithOptions all return core.Result - core.ID() replaces fmt.Sprintf, core.As replaces errors.As core/agent: - PrepSubsystem + monitor.Subsystem + setup.Service embed ServiceRuntime[T] - 22 named Actions + agent.completion Task pipeline in OnStartup - ChannelNotifier removed — all IPC via c.ACTION(messages.X{}) - proc.go: all methods via s.Core().Process(), returns core.Result - status.go: WriteAtomic + JSONMarshalString - paths.go: Fs.NewUnrestricted() replaces unsafe.Pointer - transport.go: ONE net/http file — HTTPGet/HTTPPost/HTTPDo/MCP transport - All disallowed imports eliminated from source files (13 quality gates) - String concat eliminated — core.Concat() throughout - 1:1 _test.go + _example_test.go for every source file - Reference docs synced from core/go v0.8.0 - RFC-025 updated with net/http, net/url, io/fs quality gates - lib.go: io/fs eliminated via Data.ListNames, Array[T].Deduplicate Co-Authored-By: Virgil <virgil@lethean.io>AX Quality Gates (RFC-025): - Eliminate os/exec from all test + production code (12+ files) - Eliminate encoding/json from all test files (15 files, 66 occurrences) - Eliminate os from all test files except TestMain (Go runtime contract) - Eliminate path/filepath, net/url from all files - String concat: 39 violations replaced with core.Concat() - Test naming AX-7: 264 test functions renamed across all 6 packages - Example test 1:1 coverage complete Core Features Adopted: - Task Composition: agent.completion pipeline (QA → PR → Verify → Ingest → Poke) - PerformAsync: completion pipeline runs with WaitGroup + progress tracking - Config: agents.yaml loaded once, feature flags (auto-qa/pr/merge/ingest) - Named Locks: c.Lock("drain") for queue serialisation - Registry: workspace state with cross-package QUERY access - QUERY: c.QUERY(WorkspaceQuery{Status: "running"}) for cross-service queries - Action descriptions: 25+ Actions self-documenting - Data mounts: prompts/tasks/flows/personas/workspaces via c.Data() - Content Actions: agentic.prompt/task/flow/persona callable via IPC - Drive endpoints: forge + brain registered with tokens - Drive REST helpers: DriveGet/DrivePost/DriveDo for Drive-aware HTTP - HandleIPCEvents: auto-discovered by WithService (no manual wiring) - Entitlement: frozen-queue gate on write Actions - CLI dispatch: workspace dispatch wired to real dispatch method - CLI: --quiet/-q and --debug/-d global flags - CLI: banner, version, check (with service/action/command counts), env - main.go: minimal — 5 services + c.Run(), no os import - cmd tests: 84.2% coverage (was 0%) Co-Authored-By: Virgil <virgil@lethean.io>Moves concurrency, queue drain, workspace lifecycle, and frozen state from agentic/prep into pkg/runner/ — a standalone Core service that communicates via IPC Actions only. - runner.Register wires Actions: dispatch, status, start, stop, kill, poke - runner.HandleIPCEvents catches AgentCompleted → ChannelPush + queue poke - Agentic dispatch asks runner for permission via c.Action("runner.dispatch") - Dispatch mutex moved to struct-level sync.Mutex (fixes core.Lock init race) - Registry-based concurrency counting replaces disk scanning - TrackWorkspace called on both queued and running status writes - SpawnQueued message added for runner→agentic spawn requests - ChannelPush message in core/mcp enables any service to push channel events - 51 new tests covering runner service, queue, and config parsing Co-Authored-By: Virgil <virgil@lethean.io>Pull request closed