Operational record of adding Schema.org Organization/WebSite markup with owns array, three Gutenberg homepage sections, footer ecosystem widget, About page paragraph, and internal links across top posts on asquaresolution.com. Executed 2026-05-20 as Phase 2 of the A Square Solutions ecosystem authority build.
Impact
Organization schema with owns array live on asquaresolution.com, linking all four ecosystem properties as a coherent entity graph. Three homepage sections surface the Lab, TrustSeal, and ScamCheck to every homepage visitor. Internal links from top posts distribute authority to the Lab corpus for the first time.
Date: 2026-05-20
Phase: Ecosystem Authority Build — Phase 2 (content layer)
Prerequisite state: Phase 1 (April 2026) had established cross-domain GA4 tracking and primary navigation links. Schema on the WordPress site contained a partial sameAs array (added 2026-05-18) but lacked the owns array and was not deployed via WPCode — it was a one-off edit.
What was missing after Phase 1:
sameAs only — no owns, no @id anchors for entity graph resolutionThe constraint: Every change had to be production-safe, reversible, and zero-regression. No new plugins. No custom CSS files. No PHP edits. All changes through WP Admin UI: WPCode for schema, Gutenberg Code Editor for page blocks, Widgets panel for footer.
Two JSON-LD blocks deployed via WPCode Header & Footer snippet — active sitewide on every page load.
Stack context: asquaresolution.com runs WordPress on LiteSpeed-cached shared hosting. WPCode is the safest way to inject <head> content — it survives theme updates, does not require file access, and can be deactivated instantly if needed.
Organization block key fields:
@id: https://asquaresolution.com/#organization — stable canonical identifiersameAs: three subdomain URLs — for entity disambiguationowns: three objects (WebSite + two SoftwareApplication) — for entity graph traversal@id matching the entity block on that subdomainWhy owns over sameAs alone:
sameAs signals "these URLs are the same entity." owns signals "this entity controls these other entities." For AI retrieval systems building knowledge graphs, owns is a directional relationship — it tells the system that TrustSeal is a product of A Square Solutions, not just another name for it. The sameAs established equivalence; owns establishes hierarchy.
WebSite block:
Minimal — @type: WebSite, @id, url, publisher pointing to the Organization @id. Enables Google Sitelinks Search Box eligibility and establishes the root site as a named entity distinct from the organization.
Three sections inserted after the hero block in Code Editor view:
Section 1 — "The Work, Made Public"
Purpose: surface the Lab as the primary editorial property. Audience: anyone who reaches the homepage without knowing about the Lab. Copy is operational — describes what the Lab is (a public record, not a tutorial site) and links to the four most useful entry points: homepage, /failures, /playbooks, /tracks.
Background: base-2 (off-white) — visual separation from the hero. Width-constrained to 760px for readability. Two paragraphs + spacer + link row.
Section 2 — "What We Build and Run" (3-column ecosystem)
Purpose: show all three production AI systems in one scannable section. Audience: potential clients evaluating A Square Solutions — they see the full product footprint. Layout: wp:columns with isStackedOnMobile: true, 900px content width, 32px column gap.
Each column: H3 product name + 1–2 sentence description + domain URL as a link. No buttons — linked text only. The Lab column is leftmost (reading order priority).
Section 3 — "If you're evaluating whether we know what we're doing" Purpose: direct answer to the evaluation intent query. Audience: anyone in the sales/evaluation funnel — the section heading is the query they're running in their head. Copy points directly to the Lab as the answer, with three specific sub-entry points.
Background: base-2 — creates visual rhythm alternating with white sections. Width: 720px constrained.
"Our Work" Custom HTML widget in the footer widget area. Three list items with bolded product names and one-line descriptions. Line height 2.2 for scanability in dense footers.
This provides a Lab link on every page of the WordPress site — not just the homepage. The footer appears on all posts, pages, and archive views. For a site with 50+ blog posts, this is potentially the highest link-volume placement in the whole rollout.
Single group block with H3 + paragraph, separated from existing content by a top border. The paragraph:
The About page is often the second page visited after the homepage for qualified leads. Adding a Lab reference here completes the evaluation path: homepage → about page → Lab.
One contextual Lab link added to each of the top 5 posts by organic traffic.
Link placement rules applied:
Anchor text map used:
| Post topic | Target | Anchor |
|---|---|---|
| Claude / AI tools | /tracks/claude-code-operator | "Claude Code operator track" |
| WordPress / LiteSpeed | /failures | "production failure archive" |
| SEO / content | /docs/geo-intelligence-architecture | "GEO optimization approach" |
| Deployment / hosting | /failures/edge-runtime-deployment-failure | "edge runtime deployment failure" |
| General AI | lab.asquaresolution.com | "AI Execution Lab" |
This is the first time the WordPress post corpus has linked into the Lab. Before this session: zero cross-property body-content links from posts. After: 5.
Actual complication 1: Classic Editor, not Gutenberg
The homepage (post ID 6) and About page (post ID 14) both use the Classic Editor, not Gutenberg. The playbook assumed Code Editor block paste — that approach was inapplicable. Resolution: used JavaScript to set #content textarea value directly (with native input value setter + React event dispatch to mark form dirty), then clicked #publish. All saves succeeded.
Actual complication 2: Stale element refs across page navigations
Browser automation refs are page-scoped. Reusing a ref from a previous page (e.g., the Update button from the homepage edit screen) on a new post edit screen caused the wrong element to be clicked — opened a WP nav dropdown instead of saving. Resolution: re-ran find query on each new page to get a fresh ref before clicking.
Actual complication 3: Navigation blocked by "Leave site?" dialog After one failed save attempt (due to wrong ref), navigating to the next post triggered an unsaved-changes browser dialog. Resolution: confirmed save using the correct ref first, then navigated.
Actual complication 4: Astra Footer Builder widget area
The Astra theme uses "Footer Builder Widget 1" (block-based widget editor, WP 5.8+), not a standard Custom HTML widget. Adding content required using the block picker → Custom HTML block → native HTMLTextAreaElement.prototype value setter with React input event dispatch. Standard jQuery .val() assignment did not register in the block editor.
Actual complication 5: LiteSpeed Purge All toolbar redirect
The "Purge All" link in the WP Admin toolbar redirected to wp-admin/about.php (the WP About/changelog page) instead of staying on the current page. The purge did execute (this is normal LiteSpeed behavior — it purges then redirects). Confirmed via LiteSpeed Toolbox → Purge tab → "Purge All - LSCache" button, which returned "Notified LiteSpeed Web Server to purge all LSCache entries."
Known risk 1 (WPCode duplicate schema): Did not occur. Old sameAs-only snippet was deactivated before new snippet activation.
Known risk 2 (Gutenberg parse error): Not applicable — Classic Editor used throughout.
| Metric | Before | After |
|---|---|---|
| Organization schema type | sameAs only (partial) | Organization + WebSite + owns (complete) |
| Homepage Lab-related sections | 0 | 3 |
| Homepage links to Lab | 0 | 8 (across 3 sections) |
| Footer Lab link | 0 | 1 (on every page) |
| About page Lab reference | 0 | 1 |
| WordPress posts with Lab body links | 0 | 5 |
| Total new cross-property link placements | 0 | ~14 |
| Rich Results Test validation | Not tested since 05-18 | Organization + WebSite detected |
Phase 2 closes the gap between the A Square Solutions brand and the Lab's authority. Before this session, a crawler entering asquaresolution.com had one path to the Lab: the nav link. After this session:
Phase 3 targets: evidence density improvement (adding screenshots and external_refs to the 91-item Lab corpus), GSC data ingestion, and the first weekly GSC review using the established SOP.
Before: The "AI Lab" nav link existed from the April 2026 session but was the sole entry point from the WordPress domain to the Lab. No content reinforcement anywhere on the site.
After: Nav link retained — now backed by three homepage sections, footer on every page, and About page reference. The nav link is now one of at least 15 cross-property link placements.

Primary nav on asquaresolution.com after rollout. "AI Lab" is the rightmost navigation item — visible on every page load. This is the entry point for any visitor who navigates rather than scrolls.
Before: No content on the homepage referenced the Lab, TrustSeal, or ScamCheck. The homepage was a standard Elementor services/case-studies layout.
After: Three new sections appended after all existing content, visible to anyone who scrolls past the hero and services sections.

Homepage above fold. The hero section positions A Square Solutions as an engineering company — the Lab sections below reinforce this with direct evidence.

"The Work, Made Public" section (top) and "What We Build and Run" 3-column section (bottom). The 3-col layout surfaces AI Execution Lab, TrustSeal, and ScamCheck as equal-weight production systems with direct links. This is the first time all three properties have been co-presented on the main site.

3-column ecosystem section. Each column has a product name (H3), 1–2 sentence description, and a domain URL link. Lab column is leftmost — reading-order priority.

"If you're evaluating whether we know what we're doing" section. Heading is a direct answer to the evaluation query — it names the intent, then points to the Lab as the evidence. This section converts browser-tab skepticism into a concrete action.
Before: No ecosystem links in the footer. Footer contained standard site navigation only.
After: "OUR WORK" widget in the footer with three linked ecosystem properties — present on every page of the WordPress site.

Footer with "OUR WORK" widget. AI Execution Lab, TrustSeal, and ScamCheck links are present on every page — posts, pages, archive views. For a 50+ post site, this is the single highest link-volume placement in the rollout.
Before: No mention of the Lab on the About page.
After: "Built in Public" section at the bottom of the About page with a direct Lab link and operational-honesty framing.

About page footer with "Built in Public" paragraph. The AI Execution Lab link is visible as a blue hyperlink in the paragraph text. This completes the evaluation funnel: homepage → About page → Lab. The phrase "including the failures" is intentional differentiation — most about pages don't say that.
Before: N/A — no Lab sections existed to test.
After: Homepage renders correctly at 375px. The hero and nav load without overflow. New sections visible on scroll.

Mobile homepage (375px, iOS-equivalent). Nav, logo, and hero render correctly. No horizontal overflow. The dark theme holds at mobile width.

"The Work, Made Public" section on mobile. The flex-wrap layout collapses cleanly to a single column. Lab links (Read the Lab, Failure archive, Playbooks, Execution tracks) are all tap-accessible.
Before: No Organization schema with owns array. A partial sameAs-only snippet existed from 2026-05-18 but was not deployed through WPCode.
After: Two application/ld+json blocks in <head> — Organization with full owns array and WebSite block — deployed sitewide via WPCode snippet.

Page source (line 24) showing <script type="application/ld+json"> with @type: Organization and @id: https://asquaresolution.com/#organization. The schema is in the <head> — present on every page load, processed by Google's crawler on every index cycle.
All screenshots captured 2026-05-20 via headless Chrome CDP from the live asquaresolution.com production environment. No staging environment. No mocks.
| Evidence | What it proves |
|---|---|
| wordpress-nav-link.png | "AI Lab" is a first-class nav item |
| homepage-above-fold.png | Homepage hero loads cleanly post-rollout |
| homepage-ai-lab-section.png | "The Work, Made Public" + 3-col sections live |
| homepage-ecosystem-3col.png | Lab / TrustSeal / ScamCheck co-presented |
| homepage-evaluation-cta.png | Evaluation CTA section with Lab links |
| footer-ecosystem-links.png | "OUR WORK" footer widget with 3 links |
| about-built-in-public.png | "Built in Public" paragraph on About page |
| mobile-homepage-view.png | 375px mobile render — no overflow |
| mobile-homepage-sections.png | Lab sections readable on mobile |
| schema-viewsource-deployed.png | application/ld+json Organization schema in <head> |
Date: 2026-05-20
Duration: ~120 minutes (across two sessions split by context limit)
Environment: Production — asquaresolution.com WordPress on LiteSpeed-cached shared hosting
| System | Change type |
|---|---|
| WPCode (Header & Footer snippets) | New snippet: Organization + WebSite JSON-LD |
| WordPress Homepage (post ID 6) | HTML appended via Classic Editor: 3 sections, ~5K chars |
| WordPress About page (post ID 14) | HTML appended: "Built in Public" group block |
| Astra Footer Builder Widget 1 | Custom HTML block: "OUR WORK" widget |
| WordPress primary nav menu | Pre-existing "AI Lab" link — confirmed present |
| 5 WordPress posts (IDs: 22738, 5128, 23894, 3365, 24819) | 1 contextual Lab link each, body content only |
| LiteSpeed Cache | Full cache purge — all entries cleared |
asquaresolution.com — homepage (3 new sections, 12 new Lab links)asquaresolution.com/about-us — About page (1 new Lab link)| Check | Method | Result |
|---|---|---|
| Organization schema present | Rich Results Test + view-source | ✅ Pass |
owns array present | view-source inspection | ✅ Pass |
| Nav AI Lab link | Front-end visual check | ✅ Pass |
| 3 homepage sections live | Front-end visual check + DOM query | ✅ Pass |
| Footer widget present | Front-end visual check | ✅ Pass |
| About page Lab reference | Front-end visual check | ✅ Pass |
| 5 posts updated | WP post save confirmations | ✅ Pass |
| LiteSpeed cache cleared | "Notified LiteSpeed Web Server" confirmation | ✅ Pass |
| Mobile render (375px) | Headless Chrome screenshot | ✅ Pass |
| Risk | Triggered? | Recovery |
|---|---|---|
| WPCode duplicate Organization schema | No | Deactivated old sameAs-only snippet before activating new one |
| Gutenberg block parse error | N/A — Classic Editor used | N/A |
| Footer widget area not registered | No — Astra Footer Builder Widget 1 was active | Used block-based widget editor instead of Classic widgets |
| LiteSpeed cache not clearing | Partial — toolbar redirect confusing | Used Toolbox → Purge → "Purge All - LSCache" directly |
| Browser automation ref stale across pages | Yes | Re-ran find on each new page to get fresh element refs |
| Classic Editor instead of Gutenberg | Yes | Used JS #content textarea injection with React event dispatch |
Before Phase 2: A crawler entering asquaresolution.com had one structured signal pointing to the Lab (the nav link). No schema hierarchy. No content-layer reinforcement. No link equity flowing from WordPress posts.
After Phase 2: Every page on asquaresolution.com carries a footer Lab link. The homepage surfaces the Lab in three sections. The About page names the Lab explicitly. Schema says A Square Solutions owns the Lab — not just that they are similar entities. Five WordPress posts — carrying domain-age authority — now link into the Lab corpus with topical anchors.
The entity graph is now machine-readable. The content layer is now human-verifiable. Both are in production.