Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions astro.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ export default defineConfig({
{ label: 'Branching', slug: 'docs/branching' },
{ label: 'Merging', slug: 'docs/merging' },
{ label: 'Plugin validator recipes', slug: 'docs/plugin-validator-recipes' },
{ label: 'Top plugin support', slug: 'docs/top-plugin-support' },
{ label: 'Git workflow', slug: 'docs/git-workflow' },
{ label: 'Agents', slug: 'docs/agents' },
],
Expand Down
2 changes: 2 additions & 0 deletions docs/plugin-merge-validators.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ For concrete plugin graph recipes, including WooCommerce HPOS-style orders,
Gravity Forms-style field maps, ACF field definitions, Elementor widget JSON,
Yoast indexables, and Events Calendar caches, see
[Plugin Validator Recipes](./plugin-validator-recipes.md).
For the current WordPress.org top-100 compatibility target, see
[Top Plugin Support](./top-plugin-support.md).

## Contract

Expand Down
57 changes: 57 additions & 0 deletions docs/top-plugin-support.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# Top Plugin Support

ForkPress tracks the current WordPress.org popular-plugin list as a concrete
compatibility target. The checked-in manifest is
`runtime/cow/plugin-compat/popular-wordpress-plugins.json`.

## What The Manifest Means

Every plugin in the manifest has:

- `install_support: wp-admin-plugin-install`, meaning ForkPress must keep the
WordPress admin plugin install and update routes available inside branch
previews.
- `merge_support: generic-audit`, meaning the plugin can be installed and
merged with the normal SQLite/file merge engine. If the active plugin does
not ship a ForkPress validator, ForkPress records a durable
`plugin-validator-unchecked` audit decision instead of pretending it checked
plugin-owned semantics.
- `merge_support: semantic-recipe-plus-generic-audit`, meaning ForkPress also
has a tested semantic recipe for a plugin-shaped graph used by that plugin
family.

The manifest is not a claim that ForkPress can automatically resolve every
domain-specific conflict for all 100 plugins. It is the release target that
keeps installation support and merge coverage accounting explicit.

## Refreshing The List

The list comes from the WordPress.org Plugin Directory popular browse API.

```bash
node scripts/popular-plugin-compat.mjs refresh
node scripts/popular-plugin-compat.mjs validate
```

The validator requires exactly 100 unique ranked plugins and verifies each
record declares the install support and merge coverage policy.

## Current Semantic Recipes

ForkPress has focused plugin-shaped validator coverage for:

- ACF field definitions
- Elementor widget trees
- The Events Calendar event graphs
- WooCommerce HPOS orders
- Yoast indexables

These recipes live in [Plugin Validator Recipes](./plugin-validator-recipes.md)
and are backed by `tests/cow/plugin_validator.php`.

## What Is Still Missing

To move a top-100 plugin from `generic-audit` to
`semantic-recipe-plus-generic-audit`, add a validator recipe that models the
plugin's own object graph, add focused merge tests, and only add a merge driver
when the repair is deterministic and plugin-owned.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"build": "astro build",
"preview": "astro preview",
"check": "astro check",
"test": "node --test src/remark-rewrite-doc-links.test.mjs src/astro-config.test.mjs scripts/release-metadata.test.mjs scripts/release-prepare.test.mjs scripts/release-homebrew-formula.test.mjs scripts/install.test.mjs scripts/forkpress-launcher.test.mjs",
"test": "node --test src/remark-rewrite-doc-links.test.mjs src/astro-config.test.mjs scripts/release-metadata.test.mjs scripts/release-prepare.test.mjs scripts/release-homebrew-formula.test.mjs scripts/install.test.mjs scripts/forkpress-launcher.test.mjs scripts/popular-plugin-compat.test.mjs",
"release:prepare": "node scripts/release-prepare.mjs",
"release:validate": "node scripts/release-validate.mjs",
"validate": "npm run check && npm run test && npm run build"
Expand Down
Loading
Loading