Rename /goal → /hunt and ship the recovery-state vocabulary v0.8.45 needs.
You declare a quarry — what you're after. The whale gets a target. Each session-completion path returns a verdict: hunting, hunted, wounded, or escaped. v0.8.45's theme is interruptible, recoverable agentic work — without wounded and escaped you only have done-or-nothing. /hunt ships the vocabulary; the judge that decides verdicts lands in v0.8.46 (wired to the existing verifier preview) and the full jurisdiction system lands in v0.9.0.
Why now (v0.8.45 fit)
- v0.8.45's milestone is "interruptible, recoverable agentic work across providers."
wounded and escaped are recovery-state vocabulary. Goal mode today can only complete-or-not — a session interrupted by network loss, a partial fix, an aborted hunt all collapse into the same nothing. After this issue they have distinct verdicts the runtime can act on.
- Trophy cards are the recovery artifact. A
hunted session leaves a deterministic, machine-readable record at ~/.codewhale/trophies/<date>-<slug>.md that the next session can pick up.
/goal exists today (crates/tui/src/commands/goal.rs, 183 lines, 5 localizations including mubiao). The rename is mechanical; the verdict + trophy additions are bounded.
Why the rename
Whales hunt — orcas cooperatively, sperm whales solo on giant squid, humpbacks via bubble-net. "Hunt" is more concrete than "goal" (a goal is something you set; a hunt is something you do) and it slots into the existing Constitution → Statutes → Regulations → Verdicts prompt hierarchy. The vocabulary also gives v0.8.46 verifier preview, the rest of the v0.8.x line, and the v0.9.0 judge a shared dialect.
In scope (v0.8.45 MVP)
- Rename
/goal → /hunt. /goal stays as a back-compat alias for one cycle; deprecation notice in v0.8.48 per the rename-pass milestone.
- Quarry — primary surface is
/hunt <text>. Stored on the session as a frozen header turn. <session_goal> block in crates/tui/src/prompts.rs:777 becomes <quarry> (keep <session_goal> as alias for one cycle).
- Verdict enum replacing the bool
goal_completed:
pub enum HuntVerdict {
Hunting, // default in-progress
Hunted, // declared done
Wounded(String), // partial — reason text
Escaped(String), // interrupted / abandoned — reason text
}
- Slash subcommands:
/hunt <text>, /hunt done, /hunt wounded <reason>, /hunt escaped <reason>, /hunt clear, /hunt (status).
- Trophy card writer. On
hunted: write a markdown card to ~/.codewhale/trophies/<YYYY-MM-DD>-<slug>.md with quarry, turns, files touched (from working set), tests added (from diff), elapsed, sub-agents that helped (whale species names), final assistant message.
- Theme + palette.
mode_goal palette slot renames to mode_hunt; mode_goal kept as deprecated alias one cycle. theme_qa_audit.rs updated.
- Localization. All 5 existing locales updated (EN/JA/ZH/PT/ES).
HomeGoalModeTip → HomeHuntModeTip; old id kept aliased one cycle.
- Backward compat. Existing config keys, session files, and any persisted
goal_* fields keep their names this cycle; rename pass in v0.8.48.
Out of scope (defer)
Acceptance
/hunt <text> opens hunt mode with the quarry visible in the transcript header until verdict.
/hunt done produces a trophy card on disk at the path above. Card has every field listed.
/hunt wounded "ran out of API budget" and /hunt escaped "user cancelled" produce no trophy and log the verdict to the session timeline.
/goal <text> still works as a back-compat alias; emits a one-line deprecation notice in the response ("/goal is now /hunt; this alias is removed in v0.8.48").
mubiao Chinese alias still works.
prompts.rs still wires the quarry into the system prompt (renamed block).
- All 5 locales updated; unit test asserts every
MessageId::HomeHuntModeTip translation exists.
- Trophy card structure has a unit test (every field present, valid path).
cargo test --workspace --all-features --locked and the three parity gates green.
Notes
- This is the bridge issue. v0.8.46's verifier-preview (already in scope for that milestone) consumes the verdict enum; v0.9.0's full judge fills in the jurisdiction policies. The vocabulary defined here is the contract those later milestones build on.
- Whales do hunt — naming the mode after the act, not the abstraction, fits the rest of the whale theming (species sub-agent names, pods, etc.).
Existing issues this resolves on PR merge
Related (not closed yet — these resolve when the verifier and jurisdiction layers ship in v0.8.46 / v0.9.0):
Slate item 19/19. Tracking doc: .private/issue-slate.md (maintainer-only).
Rename
/goal→/huntand ship the recovery-state vocabulary v0.8.45 needs.You declare a quarry — what you're after. The whale gets a target. Each session-completion path returns a verdict:
hunting,hunted,wounded, orescaped. v0.8.45's theme is interruptible, recoverable agentic work — withoutwoundedandescapedyou only have done-or-nothing./huntships the vocabulary; the judge that decides verdicts lands in v0.8.46 (wired to the existing verifier preview) and the full jurisdiction system lands in v0.9.0.Why now (v0.8.45 fit)
woundedandescapedare recovery-state vocabulary. Goal mode today can only complete-or-not — a session interrupted by network loss, a partial fix, an aborted hunt all collapse into the same nothing. After this issue they have distinct verdicts the runtime can act on.huntedsession leaves a deterministic, machine-readable record at~/.codewhale/trophies/<date>-<slug>.mdthat the next session can pick up./goalexists today (crates/tui/src/commands/goal.rs, 183 lines, 5 localizations includingmubiao). The rename is mechanical; the verdict + trophy additions are bounded.Why the rename
Whales hunt — orcas cooperatively, sperm whales solo on giant squid, humpbacks via bubble-net. "Hunt" is more concrete than "goal" (a goal is something you set; a hunt is something you do) and it slots into the existing Constitution → Statutes → Regulations → Verdicts prompt hierarchy. The vocabulary also gives v0.8.46 verifier preview, the rest of the v0.8.x line, and the v0.9.0 judge a shared dialect.
In scope (v0.8.45 MVP)
/goal→/hunt./goalstays as a back-compat alias for one cycle; deprecation notice inv0.8.48per the rename-pass milestone./hunt <text>. Stored on the session as a frozen header turn.<session_goal>block incrates/tui/src/prompts.rs:777becomes<quarry>(keep<session_goal>as alias for one cycle).goal_completed:/hunt <text>,/hunt done,/hunt wounded <reason>,/hunt escaped <reason>,/hunt clear,/hunt(status).hunted: write a markdown card to~/.codewhale/trophies/<YYYY-MM-DD>-<slug>.mdwith quarry, turns, files touched (from working set), tests added (from diff), elapsed, sub-agents that helped (whale species names), final assistant message.mode_goalpalette slot renames tomode_hunt;mode_goalkept as deprecated alias one cycle.theme_qa_audit.rsupdated.HomeGoalModeTip→HomeHuntModeTip; old id kept aliased one cycle.goal_*fields keep their names this cycle; rename pass in v0.8.48.Out of scope (defer)
strict/evidentiary/permissive) — that's/huntjurisdiction system: configurable LLM-as-judge with strict/evidentiary/permissive policies #2094 (v0.9.0).Acceptance
/hunt <text>opens hunt mode with the quarry visible in the transcript header until verdict./hunt doneproduces a trophy card on disk at the path above. Card has every field listed./hunt wounded "ran out of API budget"and/hunt escaped "user cancelled"produce no trophy and log the verdict to the session timeline./goal <text>still works as a back-compat alias; emits a one-line deprecation notice in the response ("/goalis now/hunt; this alias is removed in v0.8.48").mubiaoChinese alias still works.prompts.rsstill wires the quarry into the system prompt (renamed block).MessageId::HomeHuntModeTiptranslation exists.cargo test --workspace --all-features --lockedand the three parity gates green.Notes
Existing issues this resolves on PR merge
Related (not closed yet — these resolve when the verifier and jurisdiction layers ship in v0.8.46 / v0.9.0):
/goallong-running task mode) — verbiage updates only this cycle; full behavior lands when judge wires in Wire verifier preview to emit hunt verdicts (pass/partial/fail → hunted/wounded/escaped) #2093./huntjurisdiction system: configurable LLM-as-judge with strict/evidentiary/permissive policies #2094.Slate item 19/19. Tracking doc:
.private/issue-slate.md(maintainer-only).