From 05ff928a7fdb366a9004615dd240e05dcbd15d73 Mon Sep 17 00:00:00 2001 From: Lee Gonzales Date: Wed, 1 Apr 2026 03:52:11 -0600 Subject: [PATCH 1/2] fix(ci): gofmt cli_only_models_test and codergen_router_cxdb_test Batch merge (db00d48) re-introduced gofmt drift in cli_only_models_test.go and codergen_router_cxdb_test.go. Both files had whitespace alignment issues detected by `gofmt -l .`. No logic changes. Co-Authored-By: Claude Sonnet 4.6 --- internal/attractor/engine/cli_only_models_test.go | 4 ++-- internal/attractor/engine/codergen_router_cxdb_test.go | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/internal/attractor/engine/cli_only_models_test.go b/internal/attractor/engine/cli_only_models_test.go index 2d279f28..311df9f1 100644 --- a/internal/attractor/engine/cli_only_models_test.go +++ b/internal/attractor/engine/cli_only_models_test.go @@ -8,9 +8,9 @@ func TestIsCLIOnlyModel(t *testing.T) { want bool }{ {"gpt-5.4-spark", false}, - {"GPT-5.4-SPARK", false}, // case-insensitive + {"GPT-5.4-SPARK", false}, // case-insensitive {"openai/gpt-5.4-spark", false}, // with provider prefix - {"gpt-5.4", false}, // regular codex + {"gpt-5.4", false}, // regular codex {"gpt-5.4", false}, {"claude-opus-4-6", false}, {"", false}, diff --git a/internal/attractor/engine/codergen_router_cxdb_test.go b/internal/attractor/engine/codergen_router_cxdb_test.go index 0a7b6369..ebf760ff 100644 --- a/internal/attractor/engine/codergen_router_cxdb_test.go +++ b/internal/attractor/engine/codergen_router_cxdb_test.go @@ -33,10 +33,10 @@ func TestEmitCXDBToolTurns_EmitsAssistantToolCallAndToolResult(t *testing.T) { Kind: agent.EventToolCallEnd, Timestamp: time.Now(), Data: map[string]any{ - "tool_name": "Read", - "call_id": "toolu_123", + "tool_name": "Read", + "call_id": "toolu_123", "full_output": "hello world", - "is_error": false, + "is_error": false, }, }) From 070f57521aefcc9263c2596c4c9516d861f3e0f9 Mon Sep 17 00:00:00 2001 From: Lee Gonzales Date: Fri, 3 Apr 2026 06:32:19 -0600 Subject: [PATCH 2/2] fix(ci): gofmt engine.go and worktree_hint_test.go MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit engine.go — struct literal alignment drift from PR #76 (decision logging) worktree_hint_test.go — comment alignment drift from PR #78 (error UX) No logic changes. Pure whitespace. gofmt -l . → clean go vet ./... → clean go build ./... → clean 🤖 Servitor heartbeat fix — unblocks main CI Co-Authored-By: Claude Sonnet 4.6 --- internal/attractor/engine/engine.go | 18 +++++++++--------- .../attractor/engine/worktree_hint_test.go | 8 ++++---- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/internal/attractor/engine/engine.go b/internal/attractor/engine/engine.go index cb14f182..def7114b 100644 --- a/internal/attractor/engine/engine.go +++ b/internal/attractor/engine/engine.go @@ -810,15 +810,15 @@ func (e *Engine) runLoop(ctx context.Context, current string, completed []string } next := nextHop.Edge e.appendProgress(map[string]any{ - "event": "edge_selected", - "from_node": node.ID, - "to_node": next.To, - "label": next.Label(), - "condition": next.Condition(), - "hop_source": string(nextHop.Source), - "selection_method": nextHop.SelectionMeta.Method, + "event": "edge_selected", + "from_node": node.ID, + "to_node": next.To, + "label": next.Label(), + "condition": next.Condition(), + "hop_source": string(nextHop.Source), + "selection_method": nextHop.SelectionMeta.Method, "candidates_evaluated": nextHop.SelectionMeta.CandidatesEvaluated, - "conditions_matched": nextHop.SelectionMeta.ConditionsMatched, + "conditions_matched": nextHop.SelectionMeta.ConditionsMatched, }) // loop_restart (attractor-spec §3.2 Step 7): terminate current run, re-launch @@ -2067,7 +2067,7 @@ func hasMatchingOutgoingCondition(g *model.Graph, nodeID string, out runtime.Out // edgeSelectionMeta captures how edge selection resolved for decision logging. type edgeSelectionMeta struct { - Method string // condition_match, preferred_label, suggested_next_ids, weight, only_edge, fallback + Method string // condition_match, preferred_label, suggested_next_ids, weight, only_edge, fallback CandidatesEvaluated int ConditionsMatched int } diff --git a/internal/attractor/engine/worktree_hint_test.go b/internal/attractor/engine/worktree_hint_test.go index 6d16b97f..4fc222bf 100644 --- a/internal/attractor/engine/worktree_hint_test.go +++ b/internal/attractor/engine/worktree_hint_test.go @@ -18,10 +18,10 @@ func TestExtractLeadingPath(t *testing.T) { {"scripts/check.sh --flag", "scripts/check.sh"}, {"bash -c 'scripts/check.sh'", "scripts/check.sh"}, {"sh -c \"./run.sh arg1 arg2\"", "./run.sh"}, - {"echo hello", ""}, // bare command, no path - {"ls", ""}, // bare command - {"node app.js", ""}, // first token is bare command - {"", ""}, // empty + {"echo hello", ""}, // bare command, no path + {"ls", ""}, // bare command + {"node app.js", ""}, // first token is bare command + {"", ""}, // empty {" ./test.sh ", "./test.sh"}, } for _, tt := range tests {