Nishi Family › Compare › Web CMS and Site Building
Nishi Compare · measured, not asserted
Web CMS and Site Building
Nishi vs the field — every Nishi cell is measured against real organ source at emit time; each gap names the watch contract that will close it.
Nishi vs WordPress and Wix and Webflow and Drupal
Where we are. A working sovereign CMS and site factory: structured content store, whole-site blueprint as one data file, requirements brief to finished copy, design-token SSOT, template corpus, admin save-preview-publish daemon, REST plus projection API, WordPress import, sha-verified export-import (exceed), sha-pinned static publish, BM25 on-site search, fire-once scheduling, comments, forms, the enforced conversion-funnel floor (exceed), e-commerce primitive, i18n, validated block rows, NL command edit with rollback, per-pattern generation, A-B assignment, WCAG-AAA enforced fleet-wide, roles FSM, never-brick deploy (exceed), multisite and SEO by construction. Behind WordPress on depth where its ecosystem leads: N-deep revisions, a visual canvas, and extensions.
Where we need to go. A CMS a non-developer runs for real sites on owned hardware with the three depth axes WordPress owns -- restore any revision, edit on a visual canvas, extend with declared organ-plugins -- without importing the foreign-code marketplace that is WordPress's attack surface.
Research bar. WordPress is measured on revisions, Gutenberg block editor, 60k-plugin ecosystem, REST API. Theirs: the reference on all three open axes. Ours: CM1 CM2 CM3 measured on this page.
Research bar. Webflow is measured on visual designer, variables, CMS API. Theirs: the visual-canvas bar. Ours: CM2.
26 of 30 capabilities measured|3 of them measured exceeds|4 open|coverage 866/1000|adoption 16 full / 10 partial
Do this next — computed by the ranker, never chosen by a seat
Order from nx_compare_rank (nx_dr_ocm: (deficit + cost-of-delay + option + enables) x sponsor x self-sufficiency x momentum / cost). FINISH rows are rungs whose symbol is present but whose organ is short of full adoption: the cheapest closures on this board, listed before any new work. Stamp: # asof=1787883362 domain=cms target_version=0.1 rungs=4 done=1 open=3 finish=0 ranker=nx_dr_ocm
| # | Stage | Rung | Priority | Derivation |
|---|---|---|---|---|
| #1 | 0.1 | N-deep revisions with restore (CM1) snap_restore_n | 3000 | v=15 m=2 c=10 |
| #2 | later | Organ-extension registry (CM3) cp_plugin_load | 700 | v=14 m=1 c=20 |
| #3 | later | Visual block canvas (CM2) pb_canvas_emit | 560 | v=14 m=1 c=25 |
Critical path — contract, done-rule, executor, cost
| Rung | Closes with | Definition of done (pre-declared) | Executor | Est. |
|---|---|---|---|---|
| Snapshot organ (CM0) | snap_read_file | Content snapshots plus one-step prev backups -- LANDED, listed so CM1 carries momentum | Organ | 0 u |
| N-deep revisions with restore (CM1) after CM0 | snap_restore_n | Restore any recorded snapshot; the pre-restore state is itself snapshotted first so every restore is reversible; gate proves restore-then-restore returns byte-identical content and a missing snapshot id is refused | Organ | 1 u |
| Visual block canvas (CM2) | pb_canvas_emit | A canvas emitted FROM the validated row model (pb_row_valid) with drag, resize and reorder; gate proves a canvas edit round-trips to a blueprint that re-validates and emits byte-identical pages when nothing moved | Organ | 2.5 u |
| Organ-extension registry (CM3) | cp_plugin_load | An organ declares the hooks it serves in its header; the site builder loads it by name and refuses an undeclared hook; gate proves a declared extension renders into the page and an undeclared one is refused with the hook named | Organ | 2 u |
Milestones
| Milestone | Rungs | Cumulative |
|---|---|---|
| M1 · Revision depth | CM1 | 1 u |
| M2 · Visual editing | CM2 | 3.5 u |
| M3 · Extensible site factory | CM3 | 5.5 u |
comparewatch- plane row flips with it. The flip is necessary, not sufficient: it proves the symbol exists, never that the capability is good. The bar is the rung's pre-declared done-rule, proven by its gate — a symbol shipped without the behaviour behind it is a defect, and the flip is exactly what makes that defect visible instead of quiet. Competitor marks record documented capability presence — presence, not depth or scale. Adoption is measured too: every measured row carries where its organ stands on the estate's ladder (source → built → promoted → registered → invoked; libraries by importer reach minus validation importers; gates by the execution surfaces that run them). A row is fully adopted only at the top of its ladder; anything short is tagged partial with the exact remedy, so a build nobody promoted can no longer read as shipped. Census stamps: importers asof 1787849099, gate census asof 1787855507 (unix seconds; -1 = census absent).Capability matrix — measured against source
◉ leads / measured exceed● present◐ partial○ absent · click any capability for its evidence
| Capability | Nishi | WordPress | Wix | Webflow | Drupal |
|---|---|---|---|---|---|
Structured content store, portable text bundle, no SQLMeasured:cst_get exists in runtime/_hdl_build/nx_cms_store.nx, verified at emit. Content serializes to a self-describing text bundle on your disk; rivals sit on MySQL or a proprietary cloud [wix-dev-docs] Adoption: LIB-WIRED importers=21 nonval=6 — fully adopted (top of its ladder). | ● | ● | ● | ● | ● |
Whole-site blueprint as ONE data fileMeasured:sb_build_site exists in runtime/_hdl_build/nx_site_build.nx, verified at emit. A .site line file emits index, pages, nav, sitemap, robots; WP splits theme plus database, Drupal config-sync is partial Adoption: REGISTERED-DARK — PARTIAL: callable, authorised, no MCP invocation on record (a direct fork logs the runner, so this is not proof it never ran); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked). | ● | ◐ | ○ | ○ | ◐ |
Requirements brief compiles to finished copyOpen — no implementing organ is measured for this axis yet. A .req brief fills 10 archetypes with real copy, gate 6 of 6; no rival compiles requirements into content | ○ | ○ | ○ | ○ | ○ |
Design-token SSOT, retheme without markup editsMeasured:sk_head exists in runtime/nx_sclass_kit.nx, verified at emit. Tokenized shell rethemes by swapping values; WP theme.json and Webflow variables are the comparators [webflow-dev-docs] Adoption: LIB-WIRED importers=9 nonval=9 — fully adopted (top of its ladder). | ● | ● | ◐ | ● | ◐ |
Template corpus consumed from real open templatesMeasured:ti_classify exists in runtime/_hdl_build/nx_tpl_ingest.nx, verified at emit. 28 deduped structural patterns crawled sovereign; WP 12k-theme breadth is the reference Adoption: REGISTERED-UNAUTHORISED — PARTIAL: registered, no cap ever minted; no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked). | ● | ◉ | ● | ● | ● |
Content snapshots and revisionsMeasured:snap_read_file exists in runtime/_hdl_build/nx_cms_snapshot.nx, verified at emit. WP N-deep revisions with restore UI is the reference; ours is a snapshot organ plus one-step prev backups Adoption: LIB-WIRED importers=2 nonval=1 — fully adopted (top of its ladder). | ● | ◉ | ◐ | ◐ | ● |
Admin save-preview-publish API, validated, backed upMeasured:sed_backup_index exists in runtime/_hdl_build/nx_siteedit_daemon.nx, verified at emit. Live daemon validates the blueprint, previews to a scratch docroot, publishes keeping the previous page Adoption: RUN-BY:daemon — fully adopted (top of its ladder). | ● | ● | ● | ● | ● |
REST plus GraphQL-style projection content APIMeasured:cms_api_render_obj exists in runtime/_hdl_build/nx_cms_api.nx, verified at emit. WP REST API is the reference [wp-rest-api]; ours emits injection-safe JSON with caller-chosen field projection [graphql-oct2021] Adoption: LIB-GATE-ONLY importers=1 — PARTIAL: imported only by validation organs (gates, tests, benches): wire it into a shipping program. | ● | ◉ | ◐ | ◐ | ● |
Import from WordPress and any foreign HTMLMeasured:cms_migrate_wp_import exists in runtime/_hdl_build/nx_cms_migrate.nx, verified at emit. Field and value migration in; nx_site_import strips any foreign site to a portable blueprint Adoption: LIB-GATE-ONLY importers=2 — PARTIAL: imported only by validation organs (gates, tests, benches): wire it into a shipping program. | ● | ◐ | ◐ | ○ | ◐ |
Tamper-evident export-import, sha-verifiedMeasured exceed:cms_migrate_export in runtime/_hdl_build/nx_cms_migrate.nx, verified at emit. Refuses a corrupt or tampered bundle by hash, gate 7 of 7; rival migrations move bytes silently Adoption: LIB-GATE-ONLY importers=2 — PARTIAL: imported only by validation organs (gates, tests, benches): wire it into a shipping program. | ◉ | ◐ | ◐ | ◐ | ◐ |
Static publish API, sha-pinned promote, prev-backedMeasured:ma_do_promote_content exists in runtime/_hdl_build/nx_mgmt_api.nx, verified at emit. Upload then promote with confirm; concurrent sessions can never cross-publish each other's bytes Adoption: LIVE-DAEMON — fully adopted (top of its ladder). | ● | ○ | ○ | ◐ | ○ |
On-site search, BM25Measured:sr_cat exists in runtime/_hdl_build/nx_site_search.nx, verified at emit. Gated to land the right page on 3 of 3 queries against a real practice corpus Adoption: LIB-GATE-ONLY importers=1 — PARTIAL: imported only by validation organs (gates, tests, benches): wire it into a shipping program. | ● | ◐ | ● | ◐ | ◐ |
Scheduled publishing, fire-once cronMeasured:sg_num exists in runtime/_hdl_build/nx_cms_schedule_gate.nx, verified at emit. Register, validate, tick, fire exactly once, missed jobs catch up once Adoption: GATE:LIVE trial=- — fully adopted (top of its ladder). | ● | ● | ● | ● | ● |
CommentsMeasured:cmt_score exists in runtime/_hdl_build/nx_cms_comments.nx, verified at emit. WP native comments are the reference Adoption: LIB-WIRED importers=4 nonval=2 — fully adopted (top of its ladder). | ● | ◉ | ● | ○ | ● |
Forms handlingMeasured:fg_cat exists in runtime/_hdl_build/nx_cms_forms_gate.nx, verified at emit. Gated form parse and validation; WP leans on plugins Adoption: GATE:LIVE trial=GREEN — fully adopted (top of its ladder). | ● | ◐ | ● | ● | ● |
Conversion-funnel floor ENFORCED at emitMeasured exceed:wb_ux_compliant in runtime/_hdl_build/nx_web_builder.nx, verified at emit. Refuses any blueprint missing CTA, on-site search, trust, or a 3-step path; no rival refuses to build a bad funnel Adoption: LIB-WIRED importers=24 nonval=17 — fully adopted (top of its ladder). | ◉ | ○ | ○ | ○ | ○ |
E-commerce cart, tax, totals primitiveMeasured:ec_cart_subtotal exists in runtime/_hdl_build/nx_cms_ecommerce.nx, verified at emit. Woo is a plugin; ours is integer money math, gated Adoption: LIB-WIRED importers=2 nonval=1 — fully adopted (top of its ladder). | ● | ◐ | ● | ● | ◐ |
Multilingual i18nMeasured:i18n_resolve exists in runtime/_hdl_build/nx_cms_i18n.nx, verified at emit. Drupal core multilingual is the reference [drupal-multilingual] Adoption: LIB-WIRED importers=2 nonval=1 — fully adopted (top of its ladder). | ● | ◐ | ◐ | ◐ | ◉ |
Block rows validated responsiveMeasured:pb_row_valid exists in runtime/_hdl_build/nx_cms_pagebuilder.nx, verified at emit. Gutenberg and the Webflow designer are the references [webflow-dev-docs]; ours validates rows and widths, no visual canvas yet Adoption: LIB-GATE-ONLY importers=1 — PARTIAL: imported only by validation organs (gates, tests, benches): wire it into a shipping program. | ● | ◉ | ● | ◉ | ◐ |
NL command edit with rollbackMeasured:cmd_parse exists in runtime/_hdl_build/nx_site_command.nx, verified at emit. Parsed intent: set-hero, add, remove, cta, rollback; ambiguous commands are a safe no-op Adoption: LIB-GATE-ONLY importers=1 — PARTIAL: imported only by validation organs (gates, tests, benches): wire it into a shipping program. | ● | ◐ | ● | ○ | ○ |
Per-pattern generation, consumed structure drives layoutMeasured:sa_recipe_seq exists in runtime/_hdl_build/nx_site_archetype.nx, verified at emit. 28 live variation pages each follow their source template's own section order, gate 9 of 9 Adoption: SOURCE-ONLY — PARTIAL: source exists, never compiled: /api/build it. | ● | ○ | ○ | ○ | ○ |
A-B testing assignmentMeasured:ab_assign exists in runtime/_hdl_build/nx_cms_abtest.nx, verified at emit. Deterministic hash assignment, gated Adoption: LIB-WIRED importers=3 nonval=1 — fully adopted (top of its ladder). | ● | ◐ | ● | ◐ | ◐ |
Accessibility enforced on the emitted fleetMeasured:a11_find exists in runtime/_hdl_build/nx_cms_a11y.nx, verified at emit. WCAG-AAA contrast measured on every generated page [wcag22]; rivals reach a11y via tools and plugins Adoption: LIB-GATE-ONLY importers=1 — PARTIAL: imported only by validation organs (gates, tests, benches): wire it into a shipping program. | ● | ◐ | ◐ | ◐ | ◐ |
Roles authz FSM, tenant isolationMeasured:rg_num exists in runtime/_hdl_build/nx_cms_roles_gate.nx, verified at emit. The gate caught a real tenant-isolation bug and refused to record until fixed; WP roles are the reference Adoption: GATE:LIVE trial=- — fully adopted (top of its ladder). | ● | ◉ | ● | ● | ● |
Never-brick deploy, health watchdog, auto-rollbackMeasured exceed:ma_do_deploy in runtime/_hdl_build/nx_mgmt_api.nx, verified at emit. Promote then detached health probe; a failed deploy restores the previous binary automatically Adoption: LIVE-DAEMON — fully adopted (top of its ladder). | ◉ | ○ | ○ | ○ | ○ |
Multisite from one control planeMeasured:ms_cat exists in runtime/_hdl_build/nx_cms_multisite_gate.nx, verified at emit. Two production domains serve live from one host config today Adoption: GATE:LIVE trial=GREEN — fully adopted (top of its ladder). | ● | ● | ● | ● | ● |
SEO sitemap and robots emitted by constructionMeasured:sg_cat exists in runtime/_hdl_build/nx_cms_seo_gate.nx, verified at emit. Every generated site ships sitemap.xml [sitemaps-protocol] and robots.txt [rfc9309]; Yoast-class depth is the WP reference Adoption: GATE:LIVE trial=GREEN — fully adopted (top of its ladder). | ● | ◉ | ● | ● | ● |
Plugin and extension marketplaceOpen — watchingruntime/nx_cms_plugins.nx : cp_plugin_load, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. WP 60k plugins [wp-plugins]; the honest structural gap and a deliberate sovereignty tradeoff -- the contract is a sovereign organ-extension registry (an organ declares the hooks it serves; the site builder loads it by name, fail-closed on an undeclared hook), never a foreign-code marketplace | ○ | ◉ | ● | ◐ | ◉ |
N-deep content revisions with restoreOpen — watchingruntime/_hdl_build/nx_cms_snapshot.nx : snap_restore_n, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. The snapshot row above is present at one-step depth; WP keeps N revisions with a restore UI -- the contract is restore-to-any-recorded-snapshot with the previous state itself recorded, so a restore is additive and reversible | ○ | ◉ | ◐ | ◐ | ● |
Visual block canvas (drag, resize, reorder)Open — watchingruntime/_hdl_build/nx_cms_pagebuilder.nx : pb_canvas_emit, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. Rows and widths validate today (pb_row_valid) but there is no visual canvas; Gutenberg and the Webflow designer are the references [webflow-dev-docs] -- the contract is a canvas emitted FROM the validated row model that round-trips to a byte-identical blueprint | ○ | ◉ | ● | ◉ | ◐ |
Risk register
| Risk | Likelihood x impact | Mitigation |
|---|---|---|
| A canvas that emits a different blueprint than the one it read silently rewrites sites | possible x high | CM2 done-rule is byte-identity on a no-op edit before any editing feature is admitted. |
| Extensions reintroduce the foreign-code surface WordPress suffers from | possible x high | CM3 admits organs only -- sovereign source, declared hooks, no foreign runtime. |
Person · product · place — not yet measured for this domain
knowledge/compare/cms.ppp (rows surface|nishi or c1..c4|label|url|connect naming OUR live surface and each rival's front door), run nx_ppp_probe domain cms, and this section fills itself on the next beat: the same ruler on both sides — privacy and CX (third-party hosts, tracker classes, cookies, security headers), design and longevity (design hygiene, computed WCAG contrast, render-blocking resources, unsized media, script weight, theme and motion queries), findability (landmarks, skip link, on-site search, breadcrumb, headings, internal links).References
- [wp-rest-api] WordPress. REST API Handbook -- the WordPress REST API reference (routes, endpoints, authentication, field filtering). Vendor documentation. publisher · read in our library
knowledge/fetched/cmp_cms_wp_restapi.html· pinheb2d3561e17ea11d2ec5b254f419742722f293d637abdcaf0f1abf239ad4d4a5· accessed 2026-08-18 · vendor-docGrounds: The "REST plus GraphQL-style projection content API" row (the note: WP REST API is the reference) and the WordPress column's Best code there -- our cms_api_render_obj is graded against this documented API. - [wp-plugins] WordPress.org. WordPress Plugin Directory -- browse over 69,000 free plugins (page text 2026-08-18); the largest directory of free and open source WordPress plugins. publisher · read in our library
knowledge/fetched/cmp_cms_wp_plugins.html· pinh0d9e772ddceb25404eaed2a4e5ddbdd4a346bb564563556f41067f22df252e6d· accessed 2026-08-18 · vendor-docGrounds: The "Plugin and extension marketplace" row (_ABSENT_ nx_cms_plugins; the note says WP 60k plugins -- the live directory page reads over 69,000): the honest structural gap and deliberate sovereignty tradeoff is measured against this directory, and the WordPress Best code on "Comments", "Forms handling" (plugins) and "SEO" (Yoast-class) leans on the same ecosystem. - [wix-dev-docs] Wix. Wix Developer Documentation, APIs and Guidelines (Wix Docs). Vendor documentation. publisher · read in our library
knowledge/fetched/cmp_cms_wix_dev.html· pinh094a345d258b0a27562f0576ff12e4df2a16b5a932824d8731035c7abb61d423· accessed 2026-08-18 · vendor-docGrounds: The Wix column codes (Yes on the content store, admin API, scheduling and forms rows; Part on tokens, revisions, API projection and multilingual): Wix is the proprietary-cloud site builder those codes describe, and the foil for the "Structured content store, portable text bundle, no SQL" row note (rivals sit on MySQL or a proprietary cloud). - [webflow-dev-docs] Webflow. Getting started with Webflow Apps -- Webflow Developer Documentation (Data API, Designer API, apps). Vendor documentation. publisher · read in our library
knowledge/fetched/cmp_cms_webflow_dev.html· pinh1288a2889d0516a28b7a660ab955619207c332bd6a845f6475aef8eb2980a026· accessed 2026-08-18 · vendor-docGrounds: The Webflow column: Best on "Block rows validated responsive" (the Webflow designer is a reference) and Yes on "Design-token SSOT" (Webflow variables are the comparator) -- the developer documentation is the vendor surface those codes are graded against. - [drupal-multilingual] Drupal.org. Multilingual guide -- Administering a Drupal site (Drupal core multilingual: language, interface, content and configuration translation). Vendor documentation, updated 2023-11-22. publisher · read in our library
knowledge/fetched/cmp_cms_drupal_multilingual.html· pinh18ca599b3e4d1b8c503907784e93955a1078c7d9e2bdcdda75382e3196c9e7f3· accessed 2026-08-18 · vendor-docGrounds: The "Multilingual i18n" row (the note: Drupal core multilingual is the reference) and Drupal's Best code there -- our i18n_resolve is graded against Drupal core's four multilingual modules. - [wcag22] W3C. Web Content Accessibility Guidelines (WCAG) 2.2, W3C Recommendation (12 December 2024 edition): success criterion 1.4.6 Contrast (Enhanced), AAA, contrast ratio at least 7 to 1. publisher · accessed 2026-08-18 · published-standardGrounds: The "Accessibility enforced on the emitted fleet" row: WCAG-AAA contrast measured on every generated page (nx_cms_a11y a11_find) is this Recommendation's 1.4.6 bar; rivals reach a11y via tools and plugins, so the row grades the enforcement, not the intent.
- [sitemaps-protocol] sitemaps.org. Sitemaps XML format -- the Sitemap protocol (urlset, url, loc, lastmod, changefreq, priority; sitemap index files). Published protocol. publisher · read in our library
knowledge/fetched/cmp_cms_sitemaps.html· pinh5e7570590fcb92d473d7015c88940a830383b6a61bc6c16be4df51e97f471654· accessed 2026-08-18 · published-standardGrounds: The "SEO sitemap and robots emitted by construction" row: every generated site ships sitemap.xml (nx_cms_seo_gate) in this format; the WordPress Best code (Yoast-class depth) is graded on the same protocol. - [graphql-oct2021] GraphQL Foundation. GraphQL Specification, October 2021 edition (selection sets, fields and field projection by the caller). publisher · read in our library
knowledge/fetched/cmp_cms_graphql_spec.html· pinh4f556e7bc74ffcdf6ba3c6a4d1f541bd736492db47e97349200a8dfcb80e0ad1· accessed 2026-08-18 · published-standardGrounds: The "REST plus GraphQL-style projection content API" row: caller-chosen field projection (cms_api_render_obj emits injection-safe JSON with the caller naming the fields) is the GraphQL selection-set idea this specification defines -- ours is GraphQL-style, not a GraphQL endpoint, and the row says so. - [rfc9309] Koster, M., Illyes, G., Zeller, H., Sassman, L. RFC 9309: Robots Exclusion Protocol. IETF, September 2022. publisher · read in our library
knowledge/fetched/cmp_cms_rfc9309.html· pinhbbaa280636d3e38f0a1a130a5ce40e9753db1ed18c860945b0bf795ff8dc1a87· accessed 2026-08-18 · published-standardGrounds: The "SEO sitemap and robots emitted by construction" row: the robots.txt every generated site ships is this standard's file, so the emitted-by-construction claim has a published grammar to be checked against.
generated by nx_swcompare_matrix (sovereign NishiLang organ) from knowledge/compare/cms.matrix · every Nishi cell verified against organ source at emit time · watch cells re-measured on every compare beat · zero JS, zero trackers