mirror of
https://github.com/boshu2/agentops.git
synced 2026-09-14 15:08:13 +08:00
488a36b589
Swarm of 6 workers (8 items combined into 6 due to file conflicts): - Fix merge-worktrees.sh: propagate file deletions, preserve permissions (-fp) - Consolidate test helpers: add t.Cleanup to chdirTo, delete cov3W2CaptureStdout and cov3W2ChdirTemp, update 9 caller files - Add go mod tidy + symlink checks to post-merge-check.sh - Add Scope Overflow + Maintenance Protocol to agent-footguns.md - Create resolveProjectDir migration tracker (5/87 callsites documented) - Create dispatch-checklist.md for standard agent prompt references
3.5 KiB
3.5 KiB
Known Framework Footguns for Agent Dispatch
Reference doc to include in agent dispatch prompts. Prevents agents from rediscovering known issues.
See also: skills/swarm/references/worker-pitfalls.md for general platform pitfalls (bash, Go basics, git worktrees).
Go / Cobra CLI
- Cobra global state:
rootCmdflags are package-level variables. Tests that callcmd.Execute()must save/restore flag values and callcmd.Flags().Set()to reset Changed state. UseexecuteCommandhelper when available. - os.Chdir is process-global: ~160 test sites use
os.Chdirbecause production code callsos.Getwd(). Cannot uset.Parallel()with these tests. Do NOT try to refactor tests to avoid os.Chdir unless also refactoring production code. - Go flat package model: All
_test.gofiles in a directory share a namespace. When multiple agents write tests in the same package, they WILL get duplicate symbol errors. Checkcli/cmd/ao/testutil_test.gofor existing shared helpers before declaring new ones. - Stale binary: Tests that shell out to
cli/bin/ao(e.g.,flag_matrix_test.go) requiremake buildfirst. Always runmake buildbeforemake test.
Shell Environment
- cp alias: User shell may alias
cptocp -i(interactive). Always use/bin/cp -fin scripts and agent environments. - PATH inheritance: Agent subshells inherit user aliases and functions. For deterministic behavior, use absolute paths (
/usr/bin/git,/bin/rm) or prefix withcommandto bypass aliases.
Test Patterns
- Shared helpers in testutil_test.go: Before declaring a new test helper, check if it already exists in
cli/cmd/ao/testutil_test.go. Duplicate declarations cause compile errors. - t.TempDir() for isolation: Always use
t.TempDir()for test directories -- it auto-cleans and provides unique paths. - defer restore for globals: When mutating package-level variables (flags, config), always
defer func() { varName = oldVal }()immediately after saving.
Embedded Assets
- Sync after editing hooks/skills: After editing
hooks/,lib/hook-helpers.sh, orskills/standards/references/, runcd cli && make sync-hooks. Tests and builds use the embedded copies, not the source files. - CLI docs drift: After adding/changing CLI commands or flags, run
scripts/generate-cli-reference.sh. CI checks for drift.
Scope Overflow
- Scope-escape template: When a task exceeds an agent's mandate, use the structured template at
docs/contracts/scope-escape-report.md. Produce an audit instead of forcing a bad fix. This is the sanctioned behavior for unexpected scope overflow. - File count ceiling: Single-agent tasks should touch ~6 files max. Beyond that, split into subtasks or use scope-escape.
Maintenance Protocol
This document is a living reference. Update it during every post-mortem cycle.
When to add an entry:
- A post-mortem discovers a framework/platform surprise that wasted agent time
- A swarm worker hits a known limitation not documented here
- A new tool or library introduces a gotcha
How to add an entry:
- Add under the appropriate category header (Go/Cobra CLI, Shell Environment, Test Patterns, Embedded Assets)
- Create a new category if none fits
- Format:
- **Bold name**: Description of the footgun and how to avoid it - Include the relevant file path or code reference
Update cadence: Every /post-mortem should check: "Did we discover a new footgun?" If yes, add it here in the same cycle — not next cycle.