v0.6.8: BotRegistration.project_dir for non-default project layouts (F185)#149
Merged
Conversation
…F185) Today the daemon resolves a bot's working dir as `<projects_root>/<workflow_slug>/.ccteam/chat/<role>/`, with `projects_root` hardcoded to `~/projects` (or `--registry` override). That breaks two real cases: - Project lives outside the home tree (NAS share, `/vol4/.../ccteam`). - Project directory basename differs from workflow slug (dir `ccteam`, slug `research-squad`). F185 adds `BotRegistration.project_dir: Option<PathBuf>`. When set, the supervisor + mailbox resolver use the absolute path directly. `chat_register_bot` accepts an optional `project_dir` input and defaults to the MCP server's current_dir (canonicalized). Legacy registrations without the field continue to use the `<projects_root>/<slug>/` fallback — no migration needed. The `ccteam-creator` skill now passes `project_dir` (the dir holding `.ccteam/workflow.yaml`) so the daemon finds projects no matter where the user keeps them. Also fixes a stale baseline assertion in e2e_creator_full_path_test that referenced the pre-V0.6.8 `## 5.9` SKILL section (renumbered to 5.8 when the broken daemon ensure-running phase was dropped). Closes V0.6.8 F185.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes daemon's inability to find projects that live outside
~/projects/<slug>/. Two real cases this unblocks:/vol4/1000/nasworkspace/ccteam).ccteam, slugresearch-squad).Approach
BotRegistration.project_dir: Option<PathBuf>(serde-default-skip; legacy JSON without the field still parses).supervisor::bot_dirandinbound::DefaultMailboxResolverpreferreg.project_dirwhen set; fall back to the historical<projects_root>/<workflow_slug>/.ccteam/chat/<role>/whenNone.chat_register_botgains an optionalproject_dirparameter. When omitted, the dispatcher defaults tostd::env::current_dir()(canonicalized viastd::fs::canonicalize).ccteam-creatorPhase 5.6 now passesproject_dir(the directory holding.ccteam/workflow.yaml) when registering bots.No version bump, no migration tooling — pre-v1.0 policy (CLAUDE.md §五 third bullet). Old registrations continue to work via fallback.
Drive-by
e2e_creator_full_path_testcarried a stale assertion referencing## 5.9Phase 5.9 — that section was renumbered to 5.8 in #146 when the brokenccteam internal daemon ensure-runningreference was removed. Fixed here so the workspace test gate is clean.Test plan
cargo test --workspace --locked --no-fail-fast --exclude ccteam-web: 1469 pass / 0 F185-related failures. Excludedccteam-webdue to local inotify-busy host hang onws_*tests (known per CLAUDE.md §六); CI exercises it cleanly. Two remaining transient failures both reproduce on bare main and pass in isolation (cost_summary::t09_memoize_second_call_no_reread— concurrent file-watch race;dm_autoroute::daemon_dm_no_at_mention_auto_routes_to_single_bot— env-race flake CLAUDE.md §六 documents).cargo clippy --workspace --all-targets --locked -- -D warnings0 warningcargo fmt --all -- --check0 driftproject_dir_resolve_test.rs: explicitproject_dirpath used; absent → fallback toprojects_root/slugchat_register_mcp_test.rs: serde round-trip with new fieldreg.project_diroverprojects_rootAcceptance
User scenario:
Refs
docs/versions/v0-6-8/README.md(F185 will be folded into the version archive in a follow-up sweep alongside the other V0.6.8 additions).