Skip to content

feat!: make Data Machine mandatory, drop --no-data-machine#59

Merged
chubes4 merged 2 commits intomainfrom
feat/force-data-machine
Apr 22, 2026
Merged

feat!: make Data Machine mandatory, drop --no-data-machine#59
chubes4 merged 2 commits intomainfrom
feat/force-data-machine

Conversation

@chubes4
Copy link
Copy Markdown
Member

@chubes4 chubes4 commented Apr 22, 2026

Summary

Breaking change. wp-coding-agents composes on top of Data Machine — memory files (SOUL/MEMORY/USER/RULES/SITE), auto-composed AGENTS.md, skills, workspace primitive, MCP surface, conversation storage. Without DM the installer degrades to "npm i -g claude + write a settings.json", which is not a product. This PR makes DM mandatory.

If a user changes their mind post-install, the graceful out is `wp plugin deactivate data-machine` / uninstall via the admin UI. No flag required.

Managed-host framing is also dropped. wp-coding-agents is a local/VPS installer that runs node, npm, and systemd/launchd — it was never compatible with WP.com / VIP / Pressable regardless of DM. The Data Machine and Data Machine Code plugins on their own are normal WP plugins and do run on managed hosts; that's a separate onboarding path (admin plugin uploader → connect MCP → point a remote coding agent at the URL), not a `setup.sh` flag.

What changed

  • `setup.sh`: drop `--no-data-machine` flag, default, and help entry. Header comment reframes DM as substrate.
  • `upgrade.sh`: drop `INSTALL_DATA_MACHINE` default + the !DM guard around `regenerate_agents_md`. Dry-run now announces the DM skills clone unconditionally.
  • `lib/data-machine.sh`: drop the skip branches in `install_data_machine` and `create_dm_agent`.
  • `lib/skills.sh`: `Extra-Chill/data-machine-skills` is now always cloned.
  • `lib/detect.sh` / `lib/summary.sh`: drop DM conditionals and the `DATA_MACHINE=…` credentials field.
  • `lib/repair-opencode-json.py`: drop required `--install-dm` arg. The `dm-context-filter.ts` + `dm-agent-sync.ts` plugins are now keyed on `CHAT_BRIDGE == kimaki` alone.
  • `runtimes/claude-code.sh`, `runtimes/studio-code.sh`, `runtimes/opencode.sh`:
    • `runtime_discover_dm_paths` — drop early-return on !DM.
    • `runtime_generate_config` — collapse `{{IF_DATA_MACHINE}}` / `{{IF_NO_DATA_MACHINE}}` branching into a single DM-included code path.
    • `runtime_install_hooks` — SessionStart hook + workspace allow rules always install.
    • `runtime_generate_instructions` — `wp datamachine agent compose AGENTS.md` is now the default; static template remains only as a dry-run / compose-failure fallback.
    • OpenCode: `permission.external_directory` always wires up; DM kimaki plugins always wire up when bridge is kimaki.
  • `workspace/CLAUDE.md.tmpl`: remove the `{{IF_DATA_MACHINE}}` / `{{IF_NO_DATA_MACHINE}}` sentinel pair. Only the Studio conditional remains.
  • `README.md`: drop `--no-data-machine` row, reframe the old "With/Without DM" section as What Data Machine Gives You.
  • `skills/wp-coding-agents-setup/SKILL.md`: drop Question 3 ("Autonomous Operation" — was the `--no-data-machine` proxy), drop the two "no DM" command-table rows, renumber remaining questions.

`docs/changelog.md` is untouched — historical entries stay accurate; CHANGELOG regenerates from commits at release per repo convention.

Net: 190 lines removed, 87 added.

Test plan

  • `bash -n setup.sh upgrade.sh lib/.sh runtimes/.sh` — syntax clean
  • `python3 -m py_compile lib/repair-opencode-json.py` — clean
  • `setup.sh --help` — no `--no-data-machine` entry; `--agent-slug`, `--agent-name`, `--no-chat` still present
  • `repair-opencode-json.py --help` — `--install-dm` gone; `--runtime`, `--chat-bridge`, `--kimaki-plugins-dir` remain
  • Fresh `./setup.sh --local --wp-path --runtime claude-code` on a clean Studio site — confirm DM + DMC install, SessionStart hook writes, CLAUDE.md gets DM @ includes, allow rules land
  • Same for `--runtime studio-code` and `--runtime opencode` (kimaki bridge) — confirm opencode.json has the permission block and kimaki DM plugins
  • `./upgrade.sh --dry-run --local --wp-path ` on an existing install — no references to `INSTALL_DATA_MACHINE`, skill sync prints the DM skills clone line

Follow-up (not this PR)

  • Ship a zip artifact at each `homeboy release` so managed-host users can install DM via the WP admin plugin uploader. Tracked separately — the homeboy release cycle will package a zip when it's ready.

chubes4 added 2 commits April 22, 2026 09:33
wp-coding-agents composes on top of Data Machine — memory files, auto-
composed AGENTS.md, skills, workspace primitive, MCP surface. Without DM
the installer degrades to "npm i -g claude + write a settings.json,"
which is not a product.

Breaking: `--no-data-machine` is removed from setup.sh and upgrade.sh.
Everyone gets DM. If a user changes their mind after the fact they can
disable/uninstall the plugin via the admin UI.

Managed-host framing is also dropped: wp-coding-agents is a local/VPS
installer that runs node, npm, and systemd/launchd, so it was never
going to work on WP.com / VIP / Pressable regardless of DM. The Data
Machine plugin on its own is a normal WP plugin and can run on managed
hosts — that's a separate onboarding path, not a setup.sh flag.

Scope of cleanup:
- setup.sh: drop flag, default, and help entry. Shebang comment reframes
  DM as substrate.
- upgrade.sh: drop INSTALL_DATA_MACHINE default + the guard around
  regenerate_agents_md. Drift-check now always announces DM plugin
  install in dry-run.
- lib/data-machine.sh: drop --no-data-machine skip branch from
  install_data_machine and create_dm_agent.
- lib/skills.sh: Data Machine skills repo is now always cloned.
- lib/detect.sh / lib/summary.sh: drop DM conditionals and credentials
  field. Summary unconditionally prints the DM block.
- lib/repair-opencode-json.py: drop required --install-dm arg; the
  `dm-context-filter.ts` + `dm-agent-sync.ts` plugins are now keyed on
  CHAT_BRIDGE == kimaki alone.
- runtimes/claude-code.sh, studio-code.sh, opencode.sh:
  - runtime_discover_dm_paths: drop early-return on !DM.
  - runtime_generate_config: collapse IF_DATA_MACHINE / IF_NO_DATA_MACHINE
    branching into a single DM-included code path. CLAUDE.md template
    loses its conditional sentinels; only the Studio conditional remains.
  - runtime_install_hooks: drop early-return on !DM. SessionStart hook
    + workspace allow rules always install.
  - runtime_generate_instructions: `wp datamachine agent compose AGENTS.md`
    is now the default; static template remains only as a dry-run /
    compose-failure fallback.
  - opencode permission block + DM kimaki plugins always wire up.
- workspace/CLAUDE.md.tmpl: remove {{IF_DATA_MACHINE}} /
  {{IF_NO_DATA_MACHINE}} sentinel pair.
- README.md: drop --no-data-machine row, reframe the old "With/Without
  DM" section as "What Data Machine Gives You."
- skills/wp-coding-agents-setup/SKILL.md: drop Autonomous Operation
  question (Q3 — was the --no-data-machine proxy), drop the "no DM"
  command table rows, renumber remaining questions.

docs/changelog.md is untouched (historical entries stay accurate;
CHANGELOG is regenerated from commits at release per repo convention).
With DM mandatory, "When Data Machine is installed, …" and "only when DM
memory is surfaced via Kimaki" read as vestigial. Rewrite them to pin
the real condition: the chat bridge being Kimaki, since that's what
actually gates the dm-context-filter / dm-agent-sync plugins.

- README.md: Kimaki "Filter redundant context" bullet drops the DM
  clause.
- runtimes/opencode.sh: comment above the Kimaki plugins block pins on
  "bridge is Kimaki" instead of "DM memory surfaced via Kimaki".
- lib/repair-opencode-json.py: same comment update in expected_plugins().

No behavior change.
@chubes4 chubes4 merged commit 62d724d into main Apr 22, 2026
2 checks passed
@chubes4 chubes4 deleted the feat/force-data-machine branch April 22, 2026 14:42
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