Skip to content

refactor(coding-agent): remove OMO product coupling - #798

Open
madgegja wants to merge 4 commits into
code-yeongyu:mainfrom
madgegja:fix/remove-omo-engine-coupling
Open

refactor(coding-agent): remove OMO product coupling#798
madgegja wants to merge 4 commits into
code-yeongyu:mainfrom
madgegja:fix/remove-omo-engine-coupling

Conversation

@madgegja

@madgegja madgegja commented Aug 10, 2026

Copy link
Copy Markdown

Summary

  • remove the OMO-specific local plugin updater from the generic Senpi engine
  • remove its hidden worker flag, state/build implementation, QA switches, and dedicated tests
  • add a production boundary regression so OMO package-layout and updater knowledge cannot return

Why

OMO Native owns OMO packaging and update behavior. Senpi should expose generic package and branded-update contracts without knowing a downstream product's repository, package names, branch, or build layout.

Observed behavior

  • senpi update --omo-local-update-worker now follows normal unknown-option handling
  • generic self, package, and model update tests remain green
  • real source CLI smoke passes in an isolated QA sandbox

Verification

  • npx vitest run test/product-boundary.test.ts test/package-command-paths.test.ts -t 'Senpi product boundary|rejects the removed OMO local-update worker option'
  • npx vitest run test/package-command-paths.test.ts -t 'refreshes only model catalogs|allows explicit self-update checks|uses saved project trust during update'
  • npm run check
  • node .agents/skills/senpi-qa/scripts/lib/common.mjs --self-check
  • node .agents/skills/senpi-qa/scripts/cli-smoke.mjs --self-test

QA evidence was captured locally under the repository-required ignored evidence directory. Harness self-check passed 9/9, CLI smoke passed 8/8, and the real auth file remained unchanged.

Residual risk

The removed updater served local source-checkout plugin installs only. Published omo-ai already owns its branded npm update channel; local OMO development updates must be handled from the OMO repository rather than Senpi core.


Summary by cubic

Decouples Senpi from OMO by removing the OMO-specific local updater and scrubbing downstream product identifiers. senpi update now runs only generic self/package/model updates, and a repo-wide guard prevents OMO coupling from returning.

  • Refactors

    • Deleted the OMO local updater and its tests; CLI now rejects --omo-local-update-worker; removed SENPI_OMO_LOCAL_UPDATE.
    • Dropped special-casing of omo-local-update in brand-dir migration.
    • Generalized prompt markers, provenance comments, and task-extension tips to remove OMO package names, repo paths, and config files.
    • Added a repository-wide product-boundary test to block OMO package names, .omo paths, and updater hooks.
  • Migration

    • No action for users of published omo-ai; branded updates stay in the product channel.
    • Local OMO development should build/update from the OMO repo, not via Senpi.
    • Remove any use of --omo-local-update-worker in scripts.

Written for commit 2f3d9b1. Summary will update on new commits.

Review in cubic

@madgegja

Copy link
Copy Markdown
Author

Independent review found one remaining engine reference to the removed updater state directory in brand-state migration. Commit 3219ca4e1 removes that production identifier, adds it to the boundary guard, and covers generic copy-forward behavior. Focused tests and the root check pass.

@madgegja

Copy link
Copy Markdown
Author

@code-yeongyu This is ready for maintainer review and merge; all latest checks are green. I cannot enable auto-merge or merge in the upstream repository from the fork account.

@madgegja

Copy link
Copy Markdown
Author

Late boundary review is now addressed in 2f3d9b1: the guard scans every package/crate source root, forbids downstream package namespaces, repository/config paths, updater/detector identifiers, and OMO-owned prompt markers; production prompt/provenance/tip text is now Senpi-owned or implementation-neutral. Generic brand profiles and external .omo rules compatibility remain supported. Verification: focused Vitest 20/20; root npm run check passed. The only /Claude global_verify failures remain unrelated pre-existing weekly pipeline/scheduled-job state.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant