huskies: rename project from storkit to huskies

Rename all references from storkit to huskies across the codebase:
- .storkit/ directory → .huskies/
- Binary name, Cargo package name, Docker image references
- Server code, frontend code, config files, scripts
- Fix script/test to build frontend before cargo clippy/test
  so merge worktrees have frontend/dist available for RustEmbed

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Timmy
2026-04-03 16:12:52 +01:00
parent a7035b6ba7
commit 2d8ccb3eb6
572 changed files with 1340 additions and 1220 deletions
+10 -10
View File
@@ -18,7 +18,7 @@ impl AgentPool {
/// (called immediately after) picks up the right next-stage agents.
///
/// Algorithm:
/// 1. List all worktree directories under `{project_root}/.storkit/worktrees/`.
/// 1. List all worktree directories under `{project_root}/.huskies/worktrees/`.
/// 2. For each worktree, check whether its feature branch has commits ahead of the
/// base branch (`master` / `main`).
/// 3. If committed work is found AND the story is in `2_current/` or `3_qa/`:
@@ -153,7 +153,7 @@ impl AgentPool {
.unwrap_or_default()
.default_qa_mode();
let story_path = project_root
.join(".storkit/work/2_current")
.join(".huskies/work/2_current")
.join(format!("{story_id}.md"));
crate::io::story_metadata::resolve_qa_mode(&story_path, default_qa)
}
@@ -210,7 +210,7 @@ impl AgentPool {
});
} else {
let story_path = project_root
.join(".storkit/work/3_qa")
.join(".huskies/work/3_qa")
.join(format!("{story_id}.md"));
if let Err(e) =
crate::io::story_metadata::write_review_hold(&story_path)
@@ -268,7 +268,7 @@ impl AgentPool {
true
} else {
let story_path = project_root
.join(".storkit/work/3_qa")
.join(".huskies/work/3_qa")
.join(format!("{story_id}.md"));
let default_qa = crate::config::ProjectConfig::load(project_root)
.unwrap_or_default()
@@ -282,7 +282,7 @@ impl AgentPool {
if needs_human_review {
let story_path = project_root
.join(".storkit/work/3_qa")
.join(".huskies/work/3_qa")
.join(format!("{story_id}.md"));
if let Err(e) =
crate::io::story_metadata::write_review_hold(&story_path)
@@ -416,13 +416,13 @@ mod tests {
let root = tmp.path();
// Set up story in 2_current/.
let current = root.join(".storkit/work/2_current");
let current = root.join(".huskies/work/2_current");
fs::create_dir_all(&current).unwrap();
fs::write(current.join("60_story_test.md"), "test").unwrap();
// Create a worktree directory that is a fresh git repo with no commits
// ahead of its own base branch (simulates a worktree where no work was done).
let wt_dir = root.join(".storkit/worktrees/60_story_test");
let wt_dir = root.join(".huskies/worktrees/60_story_test");
fs::create_dir_all(&wt_dir).unwrap();
init_git_repo(&wt_dir);
@@ -447,7 +447,7 @@ mod tests {
init_git_repo(root);
// Set up story in 2_current/ and commit it so the project root is clean.
let current = root.join(".storkit/work/2_current");
let current = root.join(".huskies/work/2_current");
fs::create_dir_all(&current).unwrap();
fs::write(current.join("61_story_test.md"), "test").unwrap();
Command::new("git")
@@ -470,7 +470,7 @@ mod tests {
.unwrap();
// Create a real git worktree for the story.
let wt_dir = root.join(".storkit/worktrees/61_story_test");
let wt_dir = root.join(".huskies/worktrees/61_story_test");
fs::create_dir_all(wt_dir.parent().unwrap()).unwrap();
Command::new("git")
.args([
@@ -518,7 +518,7 @@ mod tests {
// and the story stays in 2_current/. The important assertion is that
// reconcile ran without panicking and the story is in a consistent state.
let in_current = current.join("61_story_test.md").exists();
let in_qa = root.join(".storkit/work/3_qa/61_story_test.md").exists();
let in_qa = root.join(".huskies/work/3_qa/61_story_test.md").exists();
assert!(
in_current || in_qa,
"story should be in 2_current/ or 3_qa/ after reconciliation"