Files
oh-my-opencode/plans/migrate-sisyphus-to-omo.md
T
2026-05-18 11:49:56 +09:00

61 lines
3.0 KiB
Markdown

# Migrate Legacy Workspace State To .omo
## Goal
Move project-scoped OMO state from `.sisyphus` to `.omo`, while preserving existing legacy state by copying `.sisyphus` into `.omo` on plugin startup when `.sisyphus` is detected.
## Task Graph
1. Add shared legacy workspace migration helper.
- Depends on: none.
- Acceptance: copies nested files from `.sisyphus` into `.omo`, creates missing directories, does not overwrite existing `.omo` files, and returns whether anything migrated.
2. Invoke migration at plugin startup.
- Depends on: task 1.
- Acceptance: startup calls the helper before managers/tools/hooks are created.
3. Switch runtime state constants to `.omo`.
- Depends on: task 1.
- Acceptance: Boulder and run-continuation writes land under `.omo`.
4. Switch guardrails and prompt-facing workspace paths to `.omo`.
- Depends on: task 3.
- Acceptance: Prometheus, Atlas, notepad, write-existing guard, and plan extraction surfaces point at `.omo`.
5. Update docs, ignore rules, and generated schema.
- Depends on: tasks 3-4.
- Acceptance: user-facing storage docs and schema examples no longer advertise `.sisyphus` for active workspace state.
6. Verify and ship.
- Depends on: tasks 1-5.
- Acceptance: focused tests, typecheck, full test suite, build, manual QA, CI, GPT-5.2 review, and Cubic all pass before merge.
## Dependency Matrix
| Task | Blocks | Verification |
| --- | --- | --- |
| Migration helper | Startup invocation, path switch | `bun test src/shared/legacy-workspace-migration.test.ts` |
| Startup invocation | Manual QA | `bun test src/testing/create-plugin-module.test.ts` or equivalent startup test |
| Runtime constants | Hook and CLI behavior | Boulder/run-continuation focused tests |
| Guardrails/prompts | Agent workflow behavior | Prometheus/Atlas/write guard focused tests |
| Docs/schema | PR review and release docs | `bun run build:schema`, `rg "\\.sisyphus"` audit |
| Verification | Merge | local gates, PR CI, reviews |
## QA Scenarios
- Happy path: project has `.sisyphus/plans/a.md` and no `.omo`; startup creates `.omo/plans/a.md` with same content.
- Existing target: project has `.sisyphus/plans/a.md` and `.omo/plans/a.md`; migration leaves `.omo/plans/a.md` unchanged.
- Mixed tree: project has `.sisyphus/plans/a.md` and `.omo/notepads/note.md`; migration copies only missing legacy files.
- Runtime write: `writeBoulderState()` creates `.omo/boulder.json`.
- Continuation marker: `setContinuationMarkerSource()` writes `.omo/run-continuation/<session>.json`.
- Guardrail: Prometheus may write `.omo/plans/*.md` and is blocked outside `.omo`.
- Adjacent compatibility: rules injector still discovers legacy `.sisyphus/rules` alongside `.omo/rules` if kept for transition.
## Commit Strategy
1. `feat(workspace): migrate legacy sisyphus state to omo`
- Migration helper, startup invocation, runtime constants, and direct tests.
2. `docs(workspace): document omo workspace paths`
- Docs, `.gitignore`, schema output, and prompt/docs wording updates if separated cleanly.