Skip to content

Commit 3493765

Browse files
Patel230claude
andcommitted
refactor!: drop legacy config fallbacks and rename leftovers
ProviderConfigPath mirrors Eyrie's resolution (EYRIE_CONFIG_DIR, then the user config dir under eyrie) instead of falling back to HAWK_CONFIG_DIR, and the safety checks no longer block the retired HAWK_CONFIG_DIR/provider.json path. Removes the graycode rename plan and the rename narrative in CHANGELOG, fixes the EcosystemReport.Eyre field name, and updates docs that described the compatibility fallback. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1 parent b89c357 commit 3493765

12 files changed

Lines changed: 47 additions & 1851 deletions

‎CHANGELOG.md‎

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1717
- **Memory and config failures no longer silently dropped**: stream-loop memory persists (assistant learnings, skills, conversation summaries, insights) and the self-improve lesson store log failures via slog, corrupt lesson stores are reported, and the config panel surfaces failed `provider` setting saves instead of ignoring them.
1818

1919
### Changed
20-
- **Renamed graycode back to hawk**: module `github.com/GrayCodeAI/hawk`, binary `hawk`, `HAWK_*` env vars, `~/.hawk` config, `cmd/hawk`, `internal/hawkerr`, and `npm/hawk*` packages, matching the `GrayCodeAI/hawk` repository name. The router dependency is `github.com/GrayCodeAI/eyrie` again (`Eyrie*` types, `eyrieengine`, `EYRIE_*` env vars, `~/.eyrie`). Hard break with no `~/.graycode` migration. `graycode-skills`, `graycode-platform`, `graycode-cloud` and the `graycode-cloud.graph/v1` schema keep their names.
2120
- **Makefile lint pin matches CI**: `make lint`/`lint-fix`/`setup` install `golangci-lint@v2.1.0` (was `@latest`), the same version CI enforces.
2221
- **Docs truth and housekeeping**: SECURITY.md/CONTRIBUTING.md now describe the actual Go toolchain (golangci-lint, go vet, govulncheck) instead of the polyglot template's ruff/mypy/pip-audit/pnpm-lock language, CONTRIBUTING documents `make setup`/`boundaries`/`test-10x`/`smoke`, and the planning docs (`SPEC_DRIVEN_PLAN.md`, `SPEC_DRIVEN_PHASE2_PLAN.md`, `internal/engine/REFACTOR_PLAN.md`) moved to `docs/plans/`.
2322

2423
## [0.2.0] — 2026-07-13
2524

2625
### Changed
27-
- **Graycode/GraycodeRouter production boundary completed**: Graycode owns the product face,
28-
sessions, tools, permissions, and public schemas while GraycodeRouter v0.2.1 owns
26+
- **Hawk/Eyrie production boundary completed**: Hawk owns the product face,
27+
sessions, tools, permissions, and public schemas while Eyrie v0.2.1 owns
2928
credentials, catalog resolution, provider transport, resilience, and usage
30-
telemetry behind the stable `graycode-router/engine` facade.
29+
telemetry behind the stable `eyrie/engine` facade.
3130
- **Provider routing and usage attribution hardened**: resolved route changes,
3231
continuation segments, and terminal usage are propagated without duplicate
33-
accounting, and production GraycodeRouter calls use exactly one resilience layer.
32+
accounting, and production Eyrie calls use exactly one resilience layer.
3433
- **Daemon conversations are durable**: JSON and SSE chat requests create or
3534
resume persisted sessions, expose stable session IDs, preserve metadata, and
3635
distinguish invalid, missing, and corrupt state.
@@ -41,18 +40,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
4140
- **Permission system unified into two independent axes**: the old `PermissionMode` (`default`/`acceptEdits`/`bypassPermissions`/`dontAsk`/`plan`) is removed. `/autonomy` now controls the 5-tier trust ladder (`Always Ask`/`Scout`/`Builder`/`Operator`/`Autonomous`, bare `/autonomy` opens a picker), and `/spec` controls an independent, orthogonal spec-driven workflow gate (`Specify → Plan → Tasks → ApproveImplementation`, bare `/spec` opens a picker) that blocks Write/Edit/Bash regardless of trust tier — including at Autonomous. Fixes a real bug where the old Plan Mode's write-block could be silently bypassed at high autonomy tiers, since tier and mode were checked independently with no ordering guarantee.
4241
- **Fixed `PermissionService.SetAutonomy`/`Autonomy()`**: previously wrote to/read from a shadow field the permission engine's `CheckTool` never consulted, meaning autonomy tier changes may not have reliably taken effect. Now both read/write the same `PermissionEngine.Autonomy` field the check logic uses.
4342
- **`--permission-mode` CLI flag removed**; `--dangerously-skip-permissions` unchanged (now maps to the Autonomous tier). New `--dry-run` flag added as an unconditional kill switch (deny every tool call, regardless of tier or spec stage) — replaces `dontAsk`'s hard-lockout role.
44-
- **Version re-baselined to `0.1.0`** across `cmd/graycode/main.go`, `cmd/daemon.go`,
45-
`flake.nix`, `.github/workflows/release.yml`, and the `update`/daemon test suites, aligning graycode
46-
with the rest of the GrayCodeAI ecosystem (`graycode-router`, `shrike`, `harrier`, `kestrel`, `merlin`).
47-
- **Architecture boundary hardening**: Graycode now owns runtime request/response DTOs, transport config/provider seams, and review/verification product-boundary contracts, with `graycode-router/client` usage restricted to internal adapters and guarded in CI.
48-
- **`shared/types` removed**: Graycode no longer ships the old shared type path, and local boundary checks now block any attempt to reintroduce it.
43+
- **Version re-baselined to `0.1.0`** across `cmd/hawk/main.go`, `cmd/daemon.go`,
44+
`flake.nix`, `.github/workflows/release.yml`, and the `update`/daemon test suites, aligning hawk
45+
with the rest of the GrayCodeAI ecosystem (`eyrie`, `shrike`, `harrier`, `kestrel`, `merlin`).
46+
- **Architecture boundary hardening**: Hawk now owns runtime request/response DTOs, transport config/provider seams, and review/verification product-boundary contracts, with `eyrie/client` usage restricted to internal adapters and guarded in CI.
47+
- **`shared/types` removed**: Hawk no longer ships the old shared type path, and local boundary checks now block any attempt to reintroduce it.
4948

5049
### Added
51-
- **Spec-driven workflow (`/spec`)**: independent, orthogonal permission gate that walks the model through `Specify → Plan → Tasks`, writing real `spec.md`/`plan.md`/`tasks.md` files to `.graycode/specs/<slug>/`, and requires explicit `ApproveImplementation` approval (always prompts, at any trust tier) before Write/Edit/Bash unlock. The approval prompt shows the actual written content, not a blind yes/no.
50+
- **Spec-driven workflow (`/spec`)**: independent, orthogonal permission gate that walks the model through `Specify → Plan → Tasks`, writing real `spec.md`/`plan.md`/`tasks.md` files to `.hawk/specs/<slug>/`, and requires explicit `ApproveImplementation` approval (always prompts, at any trust tier) before Write/Edit/Bash unlock. The approval prompt shows the actual written content, not a blind yes/no.
5251
- **`/autonomy` and `/spec` picker overlays**: bare `/autonomy` or `/spec` opens an arrow-key-navigable, filterable picker (Esc/Enter) instead of requiring subcommand syntax; typed subcommands (`/autonomy tier scout`, `/spec status`, etc.) still work.
5352
- **Watch mode (`--watch`)**: file-watcher loop that acts on `AI!` (do-now) and `AI?` (answer) code comments. Off by default.
54-
- **GitHub Action** (`.github/actions/graycode`): interactive mode on `@graycode` mentions, automation mode on labeled issues/PRs, and skill dispatch for `/`-prefixed prompts.
55-
- **Messaging gateways**: opt-in Telegram, Discord, and Slack gateways on the daemon for chatting with graycode from messaging apps.
53+
- **GitHub Action** (`.github/actions/hawk`): interactive mode on `@hawk` mentions, automation mode on labeled issues/PRs, and skill dispatch for `/`-prefixed prompts.
54+
- **Messaging gateways**: opt-in Telegram, Discord, and Slack gateways on the daemon for chatting with hawk from messaging apps.
5655
- **AST repo-map** (`internal/context/repomap`): structural repository map for richer model context.
5756
- **Auto codebase analysis on first run** (`internal/autoinit`): opt-in seeding of project context.
5857
- **Auto-lint / auto-fix cycle**: runs the matching linter after edits and iterates on fixes with bounded retries (opt-in).
@@ -74,7 +73,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7473

7574
### Added — Round 2 ecosystem improvements (2026-06-01)
7675
- **Cavecrew personas** (`internal/multiagent/agents`): three new
77-
built-in personas built into GrayCode Graycode
76+
built-in personas built into GrayCode Hawk
7877
(`cavecrew-investigator`, `cavecrew-builder`, `cavecrew-reviewer`).
7978
Each enforces a strict output format so downstream agents can parse
8079
outputs mechanically:
@@ -113,7 +112,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
113112
and a command label. API: `Record`, `AggregateForSession`,
114113
`ListForSession`, `PruneForSession`. Scoped to a single session so
115114
callers can selectively compact their own history. Companion to
116-
shrike's `internal/tracking.Tracker` (shrike tracks globally, graycode tracks
115+
shrike's `internal/tracking.Tracker` (shrike tracks globally, hawk tracks
117116
per-session).
118117

119118
### Added — Production Hardening (top-50 OSS parity)
@@ -148,16 +147,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
148147
## [0.4.0] — 2026-05-05
149148

150149
### Added
151-
- **Exec Subcommand**: `graycode exec "prompt"` — full engine non-interactive mode with `--output-format json`, `--auto` autonomy levels, `--worktree` isolation, `--agent` personas, `--session-id` resume, stdin piping
152-
- **Daemon Server**: `graycode daemon start/stop/status` — background HTTP server with JSON + SSE streaming on `/v1/chat`, `/v1/health`, `/v1/sessions`
153-
- **Mission Mode**: `graycode mission "prompt"` — multi-agent orchestration decomposing work into parallel features executed in isolated git worktrees. `--dry-run` for planning only
154-
- **Session Search**: `graycode search "query"` — full-text search across all saved sessions with `--json` output
155-
- **Custom Agents**: `graycode agent list/create/show/remove` — markdown persona definitions in `~/.graycode/agents/` with YAML frontmatter (name, description, model)
156-
- **Snapshot System**: Shadow git tracking of every file change. `graycode snapshot list/restore/diff` + `/snapshot` slash command. Auto-snapshots on every Write/Edit tool call
150+
- **Exec Subcommand**: `hawk exec "prompt"` — full engine non-interactive mode with `--output-format json`, `--auto` autonomy levels, `--worktree` isolation, `--agent` personas, `--session-id` resume, stdin piping
151+
- **Daemon Server**: `hawk daemon start/stop/status` — background HTTP server with JSON + SSE streaming on `/v1/chat`, `/v1/health`, `/v1/sessions`
152+
- **Mission Mode**: `hawk mission "prompt"` — multi-agent orchestration decomposing work into parallel features executed in isolated git worktrees. `--dry-run` for planning only
153+
- **Session Search**: `hawk search "query"` — full-text search across all saved sessions with `--json` output
154+
- **Custom Agents**: `hawk agent list/create/show/remove` — markdown persona definitions in `~/.hawk/agents/` with YAML frontmatter (name, description, model)
155+
- **Snapshot System**: Shadow git tracking of every file change. `hawk snapshot list/restore/diff` + `/snapshot` slash command. Auto-snapshots on every Write/Edit tool call
157156
- **Waza Workflows**: `/think` (plan before code), `/hunt` (root-cause diagnosis), `/check` (pre-ship review with auto-fix), `/design` (screenshot-driven UI iteration)
158157
- **Structured Compaction**: Summary template with Goal/Constraints/Progress/Files/Decisions/Errors/Instructions/Next sections for better intent preservation
159158
- **Doom Loop Detection**: Lowered threshold to 3 (from 4). Two-tier escalation: first detection injects redirect prompt, doom loop hard-stops with "ask user for help"
160-
- **Session Persistence for exec**: All exec runs saved to `~/.graycode/sessions/` and searchable via `graycode search`
159+
- **Session Persistence for exec**: All exec runs saved to `~/.hawk/sessions/` and searchable via `hawk search`
161160

162161
### Packages Added
163162
- `mission/` — Multi-agent orchestration with worktree-based parallel workers
@@ -232,5 +231,5 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
232231
### Added
233232
- Project scaffold with cobra CLI and Bubbletea TUI
234233
- Interactive chat REPL with textarea input, spinner, lipgloss styling
235-
- graycode-router wired as LLM provider dependency
234+
- eyrie wired as LLM provider dependency
236235
- GitHub Actions CI

‎docs/DEVELOPER-PATH.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,8 @@ hawk models refresh
7979
- legacy `~/.hawk/env` or `~/.hawk/.env` files should be migrated away
8080
- sensitive files like provider config and SSH paths should be blocked from agent reads
8181

82-
Eyrie resolves provider state from `EYRIE_CONFIG_DIR` first, then
83-
`HAWK_CONFIG_DIR` for compatibility, then the platform user-config directory.
82+
Eyrie resolves provider state from `EYRIE_CONFIG_DIR` first, then the
83+
platform user-config directory.
8484
Hawk protects that resolved path even when it is customized or symlinked.
8585

8686
If Hawk detects old plaintext secrets, run Hawk once and complete `/config`, or remove the secret fields manually after backing up the file.

‎docs/ECOSYSTEM-CONFIG.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ setting; the unified key is rendered down to it.
152152
| `gateway.model_catalog.path_env` | `EYRIE_MODEL_CATALOG_PATH` |
153153
| `gateway.model_catalog.url_env` | `EYRIE_MODEL_CATALOG_URL` |
154154
| `gateway.model_catalog.refresh` | `EYRIE_MODEL_CATALOG_REFRESH` / `HAWK_AUTO_REFRESH_CATALOG` / `HAWK_CATALOG_REFRESH_ALWAYS` |
155-
| `gateway` config dir | `HAWK_CONFIG_DIR` (default `~/.eyrie`) |
155+
| `gateway` config dir | `EYRIE_CONFIG_DIR` (default `<user config dir>/eyrie`) |
156156

157157
### harrier: memory
158158

‎docs/ECOSYSTEM-ROADMAP.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ depend on.
77
**Evidence base:** `docs/RESEARCH.md`, `docs/COMPETITIVE.md`, `docs/plans/competitive-gap-*.md`
88
(top-20 OSS + top-20 arXiv papers, 2026-09-09), source audits of all 4 repos,
99
and web research (2026-09-09). This document supersedes the stale
10-
`IMPLEMENTATION-ROADMAP.md` (which still references the retired `starling` /
11-
`hawk` / `eyrie` names and a 2026-07-05 baseline).
10+
`IMPLEMENTATION-ROADMAP.md` (which still references the retired `starling`
11+
name and a 2026-07-05 baseline).
1212

1313
> **Execution status: Phases 0–5 DONE (2026-09-09).** Phase 0 (integrity),
1414
> Phase 1 (restore the 5 engines), Phase 2 (product honesty + verification

‎docs/SECURITY-DEVELOPER.md‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,7 @@ required for users, and neither provisioning path enables host execution.
9999
Eyrie owns the provider-state path. Resolution order is:
100100

101101
1. `EYRIE_CONFIG_DIR/provider.json`
102-
2. `HAWK_CONFIG_DIR/provider.json` (compatibility fallback)
103-
3. the platform user-config directory under `hawk/provider.json`
102+
2. the platform user-config directory under `eyrie/provider.json`
104103

105104
Hawk's Read/Edit/Write and Bash safety checks protect the resolved path,
106105
including a custom or symlinked `EYRIE_CONFIG_DIR`; protection is not limited

0 commit comments

Comments
 (0)