Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,9 @@ coverage.html
/.codex/
/.gemini/

# Go workspace (local dev only — each developer creates their own)
go.work
go.work.sum

# macOS
.DS_Store
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,10 @@ Trace hooks into your Git workflow to capture AI agent sessions as you work. Ses

Trace is a Hawk support engine. Keep the dependency edge one-way:

- depend on `hawk-core-contracts` when a stable cross-repo contract is needed
- trace uses local-only types (trace/redaction event types are trace-scoped, not shared contracts)
- do not import `hawk/internal/*`
- do not import removed legacy path `hawk/shared/types`; use `hawk-core-contracts/types`
- do not import removed legacy path `hawk/shared/types`
- do not import other engines (`eyrie`, `yaad`, `tok`, `sight`, `inspect`) — engines are peers, not dependencies

### What you get

Expand Down
25 changes: 22 additions & 3 deletions scripts/check-ecosystem-boundaries.sh
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,37 @@ set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "$ROOT_DIR"

FORBIDDEN_HAWK='github\.com/GrayCodeAI/hawk/(internal/|shared/types)'
FORBIDDEN_ENGINES='github\.com/GrayCodeAI/(eyrie|yaad|tok|sight|inspect)(/|")'

exit_code=0

if command -v rg >/dev/null 2>&1; then
violations="$(rg -n 'github\.com/GrayCodeAI/hawk/(internal/|shared/types)' --glob '*.go' . || true)"
violations="$(rg -n "$FORBIDDEN_HAWK" --glob '*.go' . || true)"
engine_violations="$(rg -n "$FORBIDDEN_ENGINES" --glob '*.go' . || true)"
else
violations="$(grep -rn --include='*.go' -E 'github\.com/GrayCodeAI/hawk/(internal/|shared/types)' . || true)"
violations="$(grep -rn --include='*.go' -E "$FORBIDDEN_HAWK" . || true)"
engine_violations="$(grep -rn --include='*.go' -E "$FORBIDDEN_ENGINES" . || true)"
fi

if [[ -n "${violations}" ]]; then
echo "forbidden Hawk imports found:"
echo "${violations}"
echo
echo "support repos must use hawk-core-contracts or local contracts, not hawk/internal or removed hawk/shared/types"
exit 1
exit_code=1
fi

if [[ -n "${engine_violations}" ]]; then
echo "forbidden cross-engine imports found:"
echo "${engine_violations}"
echo
echo "support engines must not import other engines directly — they are peers, not dependencies"
exit_code=1
fi

if [[ $exit_code -ne 0 ]]; then
exit $exit_code
fi

echo "ecosystem boundary guard passed"
Loading