-
Notifications
You must be signed in to change notification settings - Fork 3
feat: orchestrator + acceptance criteria #16
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
7b461f2
30eff4f
54b2c58
ecdaa52
dfbbc7d
52b03d5
f6ae259
c1305af
61978a6
f0043c7
fc2d3b5
0a37d2b
032f0ef
cd73012
4ccd74b
7f4173c
a3c819c
e2d450d
1dc1c56
2d52325
a32018e
561fad3
4f331a2
c37dd4b
879198c
4d85f02
9cd3310
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,2 +1,6 @@ | ||
| url: https://bifrost.ericsiebeneich.com | ||
| realm: bifrost | ||
| orchestrate: | ||
| dispatcher: /home/devzeebo/.config/bifrost/orchestrator | ||
| concurrency: 1 | ||
| logging: verbose | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
rg -nP -C3 '\b(Logging|logging|Verbose|verbose)\b' --type=go -g '!**/vendor/**'
rg -nP -C3 'OrchestrateConfig|orchestrate\.' --type=go -g '!**/vendor/**'Repository: devzeebo/bifrost Length of output: 2306 🏁 Script executed: # Read the complete OrchestrateConfig struct definition
cat -n cli/orchestrate.go | sed -n '17,30p'Repository: devzeebo/bifrost Length of output: 680 🏁 Script executed: # Find YAML unmarshalling code
rg -n 'Unmarshal|mapstructure|yaml' --type=go -A3 -B3 cli/config.goRepository: devzeebo/bifrost Length of output: 1731 🏁 Script executed: # Check if Logging is referenced anywhere in the codebase
rg -n 'Logging|logging' --type=go -C2Repository: devzeebo/bifrost Length of output: 42 🏁 Script executed: # Check Viper configuration for field handling
rg -n 'v\.' cli/config.go | head -20Repository: devzeebo/bifrost Length of output: 445 🏁 Script executed: # Look for any error handling related to unknown fields
rg -n 'unknown|unmapped|extra.*field|field.*extra' --type=go -iRepository: devzeebo/bifrost Length of output: 9764 🌐 Web query:
💡 Result: The Viper library's default behavior for YAML unmarshalling regarding unknown fields is to ignore them silently. Viper reads YAML (or other formats) into its internal map[string]any representation, then uses the mapstructure library's Unmarshal (via viper.Unmarshal) to decode that map into a Go struct. By default, mapstructure ignores keys in the source map that do not match any struct fields, without error. To error on unknown fields instead, use viper.UnmarshalExact, which configures mapstructure with ErrorUnused=true, causing it to fail if there are unmapped keys. This applies specifically after YAML parsing; the YAML decoder itself (used by Viper for reading config files) is lenient and does not strict-unmarshal to structs directly—YAML goes to the map first. Citations:
Remove or implement support for The 🤖 Prompt for AI Agents |
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| # Claude Orchestrator | ||
|
|
||
| Uses the Claude Agent SDK (https://code.claude.com/docs/en/agent-sdk/overview) | ||
| to create an orchestrator. This orchestrator will receive a Rune description | ||
| via stdin: | ||
|
|
||
| ```json | ||
| {"branch":"feat/test","created_at":"2026-04-10T20:23:37.222802Z","dependencies_count":0,"dependents_count":0,"id":"bf-7165","priority":0,"status":"open","tags":["worker:decompose"],"title":"Test Rune","type":"rune","updated_at":"2026-04-10T21:06:30.945272Z"} | ||
| ``` | ||
|
|
||
| We should extract the expected Agent from the tags such that | ||
| "worker:<agent-name>" invokes the "<agent-name>" agent via the Claude Code SDK, | ||
| and then wait for the completion. | ||
|
|
||
| # Architecture | ||
|
|
||
| Latest python, uv, always use latest packages |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Avoid committing a developer-specific absolute path.
dispatcher: /home/devzeebo/.config/bifrost/orchestratoris a hard-coded personal path that won't resolve for any other contributor, CI agent, or docker build;bf orchestratewill fail immediately withdispatcher script not found. Since the orchestrator lives in-repo atclaude-orchestrator/dispatcher.py, point.bifrost.yamlat the in-tree script (or drop this block from the committed config and keep the absolute path in a local/untracked override).🔧 Suggested fix
📝 Committable suggestion
🤖 Prompt for AI Agents