feat(daemon): multi-repo orchestration skeleton (roadmap-v0.6 F.3)#86
Merged
Conversation
Adds crustcore_daemon::multirepo: RepoId, RepoBinding (id/path/verify/base/keywords, from config/CLI), and a pure classify_repo(intent, repos) -> Option<RepoId> that routes a chat launch — exactly one keyword hint -> that repo; no hint + single bound repo -> sole-repo default; ambiguous or unhinted-with-multiple -> None (dispatcher asks "which repo?"). The intent matches only operator-supplied keywords and never supplies a path (invariant 7); the global concurrency cap is unchanged (invariant 11). The live --repo CLI startup + simultaneous-task run is the #[ignore]d multi_repo_live_smoke (TODO(P10-multi-repo-live)), in runbook F.5. 4 new tests; daemon-only; zero nano impact. `cargo xtask verify` green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Adds parse_repo_binding (id=/path) + parse_repo_bindings (rejecting malformed args and duplicate ids), so the multi-repo startup actually parses the operator's --repo CLI args into RepoBindings that classify_repo routes over. The id/path come only from the CLI (invariant 7); ambiguity/duplicates fail helpfully. Now the only #[ignore]d inch is the actual simultaneous-task daemon run across the bound repos. 3 new tests; daemon-only; zero nano impact. `cargo xtask verify` green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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
Roadmap-v0.6 F.3 — bind multiple repos at startup and route a chat launch to the right one. New module
crustcore_daemon::multirepo:RepoBinding(id/path/verify/base_branch/keywords) — trusted setup data from config/CLI.classify_repo(intent, repos) → Option<RepoId>— exactly one keyword hint → that repo; no hint + one bound repo → sole-repo default; ambiguous or unhinted-with-multiple →None(the dispatcher asks "which repo?" — a helpful failure, not a silent pick).CI core vs live seam
None; case-insensitive + path-free (the intent matches keywords, never supplies a path).#[ignore],TODO(P10-multi-repo-live)): the--repo id=/pathCLI startup + a simultaneous-task run —multi_repo_live_smoke, runbook §F.5.Trust boundary
Repo paths come from config/CLI, never the model or user message text (invariant 7) — the intent is only matched against operator keywords. The global concurrency cap is unchanged (invariant 11).
Tests run
cargo xtask verify— green (runbook-check: 29 ignored seams + 20 tags). Nano unchanged at 53.5% (daemon-only). Independent offmain.🤖 Generated with Claude Code