Combines three repositories into a single workspace: - go-agent → pkg/orchestrator (Clotho), pkg/jobrunner, pkg/loop, cmd/ - go-agentic → pkg/lifecycle (allowance, sessions, plans, dispatch) - php-devops → repos.yaml, setup.sh, scripts/, .core/ Module path: forge.lthn.ai/core/agent All packages build, all tests pass. Co-Authored-By: Virgil <virgil@lethean.io>
2.1 KiB
2.1 KiB
Hook Output Policy
Consistent policy for what hook output to expose to Claude vs hide.
Principles
Always Expose
| Category | Example | Reason |
|---|---|---|
| Test failures | FAIL: TestFoo |
Must be fixed |
| Build errors | cannot find package |
Blocks progress |
| Lint errors | undefined: foo |
Code quality |
| Security alerts | HIGH vulnerability |
Critical |
| Type errors | type mismatch |
Must be fixed |
| Debug statements | dd() found |
Must be removed |
| Uncommitted work | 3 files unstaged |
Might get lost |
| Coverage drops | 84% → 79% |
Quality regression |
Always Hide
| Category | Example | Reason |
|---|---|---|
| Pass confirmations | PASS: TestFoo |
No action needed |
| Format success | Formatted 3 files |
No action needed |
| Coverage stable | 84% (unchanged) |
No action needed |
| Timing info | (12.3s) |
Noise |
| Progress bars | [=====> ] |
Noise |
Conditional
| Category | Show When | Hide When |
|---|---|---|
| Warnings | First occurrence | Repeated |
| Suggestions | Actionable | Informational |
| Diffs | Small (<10 lines) | Large |
| Stack traces | Unique error | Repeated |
Implementation
Use output-policy.sh helper functions:
source "$SCRIPT_DIR/output-policy.sh"
# Expose failures
expose_error "Build failed" "$error_details"
expose_warning "Debug statements found" "$locations"
# Hide success
hide_success
# Pass through unchanged
pass_through "$input"
Hook-Specific Policies
| Hook | Expose | Hide |
|---|---|---|
check-debug.sh |
Debug statements found | Clean file |
post-commit-check.sh |
Uncommitted work | Clean working tree |
check-coverage.sh |
Coverage dropped | Coverage stable/improved |
go-format.sh |
(never) | Always silent |
php-format.sh |
(never) | Always silent |
Aggregation
When multiple issues, aggregate intelligently:
Instead of:
- FAIL: TestA
- FAIL: TestB
- FAIL: TestC
- (47 more)
Show:
"50 tests failed. Top failures:
- TestA: nil pointer
- TestB: timeout
- TestC: assertion failed"