Repository navigation
Fix self-improve topic-scoped path resolution - #2732
Conversation
Add a dedicated resolver for self-improve artifact roots, teach validation to resolve scoped settings, and document the topic-scoped layout while preserving legacy flat-root fallback. The focused regression test covers default, explicit-topic, and legacy compatibility behavior without widening into unrelated self-improve changes. Constraint: Keep scope narrow to self-improve topic-scoped path resolution and compatibility Rejected: Reworking broader self-improve runtime behavior | unnecessary for issue #2731 Confidence: high Scope-risk: narrow Reversibility: clean Directive: Route future self-improve path reads through the resolver instead of hardcoding .omc/self-improve/ Tested: npm run test:run -- src/cli/__tests__/self-improve-paths.test.ts Tested: npm run build Tested: npm run lint -- src/cli/__tests__/self-improve-paths.test.ts Not-tested: Full self-improve runtime end-to-end loop execution
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ce6972e523
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| if [[ -n "${candidate}" ]]; then | ||
| SETTINGS="${candidate}" | ||
| return 0 |
There was a problem hiding this comment.
Reject nonexistent topic settings during scoped resolution
When --project-root is combined with --topic/--slug, resolve_settings_from_project_root accepts any settings_path string from resolve-paths.mjs without checking that the file exists. If the selector is wrong (for example, a typo in --slug), resolve_settings_path still succeeds, and check_sealed_files later prints “No settings file found — skipping sealed file check.” and exits successfully. This silently disables sealed-file enforcement in the exact multi-topic flows this change introduces, so benchmark/protected files can be modified without being blocked.
Useful? React with 👍 / 👎.
Release includes: - feat(team): cursor-agent as 4th tmux worker type (#2736) - fix(keyword-detector): stop false-positive autopilot on "autonomous" (#2739) - fix(self-improve): scope artifacts by topic for safer resumes (#2732) Constraint: 4 version files must remain in sync (package.json, plugin.json, marketplace.json, package-lock.json) Constraint: dist/ is gitignored but tracked; force-add required for new files Confidence: high Scope-risk: narrow Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Summary
Verification
Closes #2731