Problem
campaign.yaml.target_system.worktree_extras is meant for paths that need to be present in the experiment worktree but aren't tracked in the target repo's main branch (typically gitignored: model weights, generated configs, etc.).
When a campaign author mistakenly declares a tracked path in worktree_extras, nous emits a warning and skips the symlink (correct behavior). But the warning is noisy, repeats every iteration, and nothing surfaces it earlier — at campaign load time — before the user has invested in a run.
In paper-memorytime-mirage, declaring hardware_config.json and testdata in worktree_extras (both tracked in BLIS main) produced repeated warnings on every iteration.
Desired behavior
Two improvements:
-
Validator-time soft warning at campaign load time. When nous run loads campaign.yaml, the validator inspects each worktree_extras entry against the target repo's git status. Tracked paths produce an immediate warning with a clear message:
worktree_extras entry hardware_config.json is tracked in the target repo's main branch. Tracked paths are already present in every git worktree checkout; declaring them here will trigger a per-iteration collision warning. Remove this entry, or move the file out of git tracking if you intend to override it.
-
Schema doc clarification. nous schema campaign rendering for worktree_extras should explicitly state: "Only declare gitignored or out-of-repo paths here. Tracked paths are already in the worktree checkout and will trigger collision warnings."
Suggested implementation sketch
- In the campaign loader, after parsing, run
git -C <target_repo> ls-files --error-unmatch <each-worktree_extras-entry> (or equivalent). Tracked → warn at load time.
- Update the schema doc string for
worktree_extras with the clarification.
- Update
nous schema campaign rendering output.
Acceptance criteria
Severity
LOW — cosmetic, but the campaign-author footgun is preventable.
Source
friction-report.md F6, paper-memorytime-mirage campaign (2026-05).
Part of friction-report tracking issue #245.
Problem
campaign.yaml.target_system.worktree_extrasis meant for paths that need to be present in the experiment worktree but aren't tracked in the target repo's main branch (typically gitignored: model weights, generated configs, etc.).When a campaign author mistakenly declares a tracked path in
worktree_extras, nous emits a warning and skips the symlink (correct behavior). But the warning is noisy, repeats every iteration, and nothing surfaces it earlier — at campaign load time — before the user has invested in a run.In paper-memorytime-mirage, declaring
hardware_config.jsonandtestdatainworktree_extras(both tracked in BLIS main) produced repeated warnings on every iteration.Desired behavior
Two improvements:
Validator-time soft warning at campaign load time. When
nous runloadscampaign.yaml, the validator inspects eachworktree_extrasentry against the target repo's git status. Tracked paths produce an immediate warning with a clear message:Schema doc clarification.
nous schema campaignrendering forworktree_extrasshould explicitly state: "Only declare gitignored or out-of-repo paths here. Tracked paths are already in the worktree checkout and will trigger collision warnings."Suggested implementation sketch
git -C <target_repo> ls-files --error-unmatch <each-worktree_extras-entry>(or equivalent). Tracked → warn at load time.worktree_extraswith the clarification.nous schema campaignrendering output.Acceptance criteria
nous run(ornous validate) produces a warning at campaign load time for anyworktree_extrasentry that's tracked in the target repo.nous schema campaigndocuments the gitignored-only constraint in the field's description.Severity
LOW — cosmetic, but the campaign-author footgun is preventable.
Source
friction-report.mdF6, paper-memorytime-mirage campaign (2026-05).Part of friction-report tracking issue #245.