Skip to content

Phase 4: builder taxonomy registry, tree profile contract, unified walkers - #69

Open
ifahimreza wants to merge 5 commits into
improve/phase3-dryfrom
improve/phase4-architecture
Open

Phase 4: builder taxonomy registry, tree profile contract, unified walkers#69
ifahimreza wants to merge 5 commits into
improve/phase3-dryfrom
improve/phase4-architecture

Conversation

@ifahimreza

Copy link
Copy Markdown
Contributor

Closes #65 (free side). Stacked on #68 (Phase 3). Pro counterpart routes the authoring path through its driver.

  • Saddle_Builders — single taxonomy behind builder_signature(), context warnings, and the namespace guard; labels byte-identical.
  • Saddle_Tree abstract + abstract validate() — the profile seam is now an enforced contract.
  • Node-list helpers unified on Saddle_Lint; rule base + render delegate.
  • Version → 1.1.0.

Suite green (368 tests); Pro suite green against this branch.

Note: per-post detection memoization was evaluated and deliberately NOT added — WP's meta cache already makes repeat probes O(1), and a static result cache would go stale when abilities/tests flip builder meta mid-request.

🤖 Generated with Claude Code

https://claude.ai/code/session_0133CZhoFPY6BBChDDGEa22Q

ifahimreza and others added 5 commits July 24, 2026 02:25
…unified node walkers

- New Saddle_Builders: one table (detection order, per-post signals,
  site-wide product signals, owned block namespaces) behind
  builder_signature(), the context builder warnings, and the native-tree
  namespace guard — three previously drifting lists ("Divi 5" vs "Divi"
  vs ['divi']) now share a source of truth. Filter-emitted labels are
  byte-identical to before.
- Saddle_Tree is now abstract with an abstract validate(): the validation
  profile is an enforced contract (same philosophy as the lint/render
  accessor interfaces) instead of a convention. Both existing profiles
  already conform — declaration only.
- The flat-node-list shape helpers (children_of, descendants_of,
  is_descendant, sections) live once on Saddle_Lint; Saddle_Lint_Rule and
  Saddle_Render delegate instead of carrying verbatim copies.
- Version 1.1.0 (new public API: integration engine, accessors resolver,
  builders registry).

Phase 4 of the 2026-07 architecture review (#65).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0133CZhoFPY6BBChDDGEa22Q
From the wp.org submission audit (no blockers found):
- readme.txt gains the 1.1.0 changelog entry.
- languages/saddle.pot regenerated at 1.1.0 (was stale at 1.0.0).
- The parked class-saddle-ecosystem.php no longer ships (Gruntfile
  exclude) — reviewers ask about unreferenced code.
- package.json version synced to 1.1.0.
- phpcs: Yoda condition in the token user check, engine constructor
  docblock summary, phpcbf alignment in the admin REST class. Tree is
  now 0 errors / 1 accepted warning ($include param name).
- admin bundle rebuilt from current admin/src.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0133CZhoFPY6BBChDDGEa22Q
Ran the official Plugin Check plugin (via wp-cli on divi-dev) against the
1.0.0 tree; three real findings, all fixed:

- readme title drops the word "WordPress" ("Saddle – Control Your Site
  with AI (MCP Server)") — the trademark rule forbids it anywhere in a
  plugin name.
- The bundled wp-mcp library's translatable strings now use the 'saddle'
  text domain (152 i18n calls; identifiers like the mcp-adapter/* ability
  ids, the ability category, and the WP-CLI command name untouched) —
  clears 147 TextDomainMismatch errors and makes those strings actually
  translatable through the plugin's language pack.
- uninstall.php's bare $timestamp global renamed to $saddle_gc_timestamp.

Remaining Plugin Check output is dev-tree-only files the release zip
already excludes (dotfiles, internal .md docs, phpcs/phpunit configs)
plus the cosmetic readme-vs-header name-length mismatch warning.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0133CZhoFPY6BBChDDGEa22Q
…d marker meta

Merges fix/wporg-plugin-check into the 1.1.0 stack and adds the two
cleanup entries 1.1.0 introduced: the saddle_enforce_tier_domain option
and the saddle_issued_credentials user meta.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0133CZhoFPY6BBChDDGEa22Q
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