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

3.0 KiB

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.