mirror of
https://github.com/fabro-sh/fabro.git
synced 2026-09-16 23:43:10 +00:00
The Stage 6 audit caught that `load_project_config` and `load_run_config`
bypassed `ConfigLayer::load` and called `parse_project_config` /
`ConfigLayer::parse` directly. As a result, `resolve_goal_file_paths` —
which rewrites relative `[run.goal] file = "..."` paths to absolute
against the declaring file's directory — only fired for
`~/.fabro/settings.toml`, never for `fabro.toml` or `workflow.toml`.
That meant a project author writing
[run.goal]
file = "prompts/goal.md"
would have the relative path survive all the way to consume time and
get resolved against the run's `working_directory` instead of the
config-file directory, contradicting the agreed "config-file rooted"
rule and breaking the most common case.
Both loaders now delegate to `ConfigLayer::load(path)`, which performs
the load-time rewrite. The user-settings path was already correct.
## Tests
- `load_project_config_rewrites_relative_goal_file_path`
- `load_run_config_rewrites_relative_goal_file_path`
- `load_run_config_leaves_absolute_goal_file_untouched`
- `build_manifest_resolves_relative_goal_file_in_project_config` —
end-to-end via `build_run_manifest`, asserting the absolute path lands
in `manifest.goal.path` and the file contents land in
`manifest.goal.text`.
- `build_manifest_resolves_relative_goal_file_in_workflow_config` — same
shape but exercising `workflow.toml`-declared goal files, which
resolve relative to the much deeper workflow directory rather than
the project root.
3,787 workspace tests pass (was 3,782, +5 new). `cargo fmt --check
--all` and `cargo clippy --workspace -- -D warnings` are clean.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| fabro-agent | ||
| fabro-api | ||
| fabro-checkpoint | ||
| fabro-cli | ||
| fabro-config | ||
| fabro-core | ||
| fabro-devcontainer | ||
| fabro-github | ||
| fabro-graphviz | ||
| fabro-hooks | ||
| fabro-interview | ||
| fabro-llm | ||
| fabro-macros | ||
| fabro-mcp | ||
| fabro-model | ||
| fabro-oauth | ||
| fabro-proc | ||
| fabro-retro | ||
| fabro-sandbox | ||
| fabro-server | ||
| fabro-slack | ||
| fabro-spa | ||
| fabro-store | ||
| fabro-telemetry | ||
| fabro-test | ||
| fabro-tracker | ||
| fabro-types | ||
| fabro-util | ||
| fabro-validate | ||
| fabro-workflow | ||