diff --git a/work-items/open/20260601-125240-workspace-local-manifest-override/artifacts/.gitkeep b/work-items/closed/20260601-125240-workspace-local-manifest-override/artifacts/.gitkeep similarity index 100% rename from work-items/open/20260601-125240-workspace-local-manifest-override/artifacts/.gitkeep rename to work-items/closed/20260601-125240-workspace-local-manifest-override/artifacts/.gitkeep diff --git a/work-items/open/20260601-125240-workspace-local-manifest-override/artifacts/delegation-intent.md b/work-items/closed/20260601-125240-workspace-local-manifest-override/artifacts/delegation-intent.md similarity index 100% rename from work-items/open/20260601-125240-workspace-local-manifest-override/artifacts/delegation-intent.md rename to work-items/closed/20260601-125240-workspace-local-manifest-override/artifacts/delegation-intent.md diff --git a/work-items/open/20260601-125240-workspace-local-manifest-override/artifacts/implementation-report.md b/work-items/closed/20260601-125240-workspace-local-manifest-override/artifacts/implementation-report.md similarity index 100% rename from work-items/open/20260601-125240-workspace-local-manifest-override/artifacts/implementation-report.md rename to work-items/closed/20260601-125240-workspace-local-manifest-override/artifacts/implementation-report.md diff --git a/work-items/closed/20260601-125240-workspace-local-manifest-override/artifacts/review.md b/work-items/closed/20260601-125240-workspace-local-manifest-override/artifacts/review.md new file mode 100644 index 00000000..1dc5f59f --- /dev/null +++ b/work-items/closed/20260601-125240-workspace-local-manifest-override/artifacts/review.md @@ -0,0 +1,48 @@ +# Review: workspace-local manifest override + +Reviewer Pod: `workspace-override-reviewer-20260601` + +## Result + +Approved. No blockers found. + +## Findings + +The implementation satisfies the intent: + +- `.yoi/override.local.toml` is discovered as the workspace-local override. +- The override applies only to normal Profile/default resolution. +- Explicit `--manifest ` remains a single-file escape hatch and does not load the workspace override. +- Merge order is builtin/default + selected Profile, then workspace override, then final `PodManifest` validation. +- Relative paths in the override are resolved from the override file parent `.yoi/` directory. +- `.yoi/manifest.toml` cascade was not reintroduced. +- Overrides that set `pod.name` are rejected. +- Provenance is recorded narrowly through `manifest.profile.workspace_override`. + +## Follow-up handled + +Reviewer requested non-blocking coverage for the case where both parent and nested `.yoi/override.local.toml` exist. Coder added commit `8f98785 test: cover nearest workspace override`, which verifies the nearest nested override wins and checks provenance. + +## Validation evidence + +Coder reported: + +- `cargo test -p manifest workspace_local_override -- --nocapture` +- `cargo test -p pod manifest_mode_does_not_apply_workspace_local_override -- --nocapture` +- `cargo test -p manifest -p pod` +- `./tickets.sh doctor` +- `git diff --check` +- `nix build .#yoi` + +Parent/orchestrator reran after merge: + +- `cargo test -p manifest workspace_local_override -- --nocapture` +- `cargo test -p pod manifest_mode_does_not_apply_workspace_local_override -- --nocapture` +- `./tickets.sh doctor` +- `git diff --check` +- `nix build .#yoi` +- `./result/bin/yoi pod --help` + +## Residual risk + +`ProfileResolver::resolve()` still discovers named/default profiles from process cwd while `with_workspace_base(...)` controls scope and override discovery. This was judged non-blocking for the intended CLI/Profile/default/SpawnPod paths, but future callers should avoid assuming `with_workspace_base` also binds registry discovery. diff --git a/work-items/open/20260601-125240-workspace-local-manifest-override/item.md b/work-items/closed/20260601-125240-workspace-local-manifest-override/item.md similarity index 98% rename from work-items/open/20260601-125240-workspace-local-manifest-override/item.md rename to work-items/closed/20260601-125240-workspace-local-manifest-override/item.md index 27e2dc91..96f823b5 100644 --- a/work-items/open/20260601-125240-workspace-local-manifest-override/item.md +++ b/work-items/closed/20260601-125240-workspace-local-manifest-override/item.md @@ -2,12 +2,12 @@ id: 20260601-125240-workspace-local-manifest-override slug: workspace-local-manifest-override title: Support workspace-local manifest override layer -status: open +status: closed kind: task priority: P2 labels: [profile, manifest, config] created_at: 2026-06-01T12:52:40Z -updated_at: 2026-06-01T13:05:58Z +updated_at: 2026-06-01T13:19:36Z assignee: null legacy_ticket: null --- diff --git a/work-items/closed/20260601-125240-workspace-local-manifest-override/resolution.md b/work-items/closed/20260601-125240-workspace-local-manifest-override/resolution.md new file mode 100644 index 00000000..bb9aa40c --- /dev/null +++ b/work-items/closed/20260601-125240-workspace-local-manifest-override/resolution.md @@ -0,0 +1 @@ +Implemented workspace-local .yoi/override.local.toml as an ignored manifest override layer for normal Profile/default startup. Explicit --manifest remains override-free; focused tests and nix build passed. diff --git a/work-items/open/20260601-125240-workspace-local-manifest-override/thread.md b/work-items/closed/20260601-125240-workspace-local-manifest-override/thread.md similarity index 59% rename from work-items/open/20260601-125240-workspace-local-manifest-override/thread.md rename to work-items/closed/20260601-125240-workspace-local-manifest-override/thread.md index cde761db..b8c92169 100644 --- a/work-items/open/20260601-125240-workspace-local-manifest-override/thread.md +++ b/work-items/closed/20260601-125240-workspace-local-manifest-override/thread.md @@ -80,4 +80,69 @@ Implemented workspace-local manifest override support. All completed successfully. +--- + + + +## Review: approve + +# Review: workspace-local manifest override + +Reviewer Pod: `workspace-override-reviewer-20260601` + +## Result + +Approved. No blockers found. + +## Findings + +The implementation satisfies the intent: + +- `.yoi/override.local.toml` is discovered as the workspace-local override. +- The override applies only to normal Profile/default resolution. +- Explicit `--manifest ` remains a single-file escape hatch and does not load the workspace override. +- Merge order is builtin/default + selected Profile, then workspace override, then final `PodManifest` validation. +- Relative paths in the override are resolved from the override file parent `.yoi/` directory. +- `.yoi/manifest.toml` cascade was not reintroduced. +- Overrides that set `pod.name` are rejected. +- Provenance is recorded narrowly through `manifest.profile.workspace_override`. + +## Follow-up handled + +Reviewer requested non-blocking coverage for the case where both parent and nested `.yoi/override.local.toml` exist. Coder added commit `8f98785 test: cover nearest workspace override`, which verifies the nearest nested override wins and checks provenance. + +## Validation evidence + +Coder reported: + +- `cargo test -p manifest workspace_local_override -- --nocapture` +- `cargo test -p pod manifest_mode_does_not_apply_workspace_local_override -- --nocapture` +- `cargo test -p manifest -p pod` +- `./tickets.sh doctor` +- `git diff --check` +- `nix build .#yoi` + +Parent/orchestrator reran after merge: + +- `cargo test -p manifest workspace_local_override -- --nocapture` +- `cargo test -p pod manifest_mode_does_not_apply_workspace_local_override -- --nocapture` +- `./tickets.sh doctor` +- `git diff --check` +- `nix build .#yoi` +- `./result/bin/yoi pod --help` + +## Residual risk + +`ProfileResolver::resolve()` still discovers named/default profiles from process cwd while `with_workspace_base(...)` controls scope and override discovery. This was judged non-blocking for the intended CLI/Profile/default/SpawnPod paths, but future callers should avoid assuming `with_workspace_base` also binds registry discovery. + + +--- + + + +## Closed + +Implemented workspace-local .yoi/override.local.toml as an ignored manifest override layer for normal Profile/default startup. Explicit --manifest remains override-free; focused tests and nix build passed. + + ---