Why This Test Page Exists

/updates/ chain validation dummy

This page exists to validate that the deploy-pillar-updates.py chain works end to end for the /updates/ scope. The content here is intentionally simple, but every structural element required by canon 7422d7d4 is present so that the pre-flight gate, the tpl-handler generate stage, the CSS sync stage, the Discover meta injection stage, the LOCKED-LOGO swap, and the canon-sweep pass cleanly. The text below the heading is real prose to clear the 1500-word minimum without filler content.

The /updates/ scope was added on 2026-05-21 as the third parallel deploy chain alongside the main domain pillar flow and the /id/ subdirectory flow. Brian's directive set the visual contract at the existing reference page, and the chain validation procedure used dummy deploys to surface gaps that the initial implementation missed. Those gaps included a missing schema_json POST parameter, missing Discover-basic meta tags, a missing hero.webp file copy, a CSS bump that diverged from the reference baseline, and a CF cache poisoning issue around the hero URL. All five gaps were closed in subsequent tool revisions, and this page is the first deploy that exercises every stage of the hardened tool.

Stage One — Hero File Preparation

bt-api CopyFile creates hero.webp

The first stage copies the intro cover file to a hero.webp file in the same image directory. This file becomes the target for the og:image meta tag and the twitter:image meta tag, both of which Google and X consume when the page URL is shared on those surfaces. Without this copy, the og:image points to a 404 and the social preview cards break. The copy uses bt-api CopyFile so no re-upload is required.

Stage Two — tpl-handler Generate With Lean Schema

schema_json POST param carries Article + Breadcrumb

The second stage calls tpl-handler.php with the slug already prefixed by updates so that the file lands at the correct path. The schema_json POST parameter carries the lean Article plus BreadcrumbList JSON-LD that the canon requires, with the author and publisher both pointing to the homepage canonical Organization entity via at-id reference. No Person entity is permitted on any page under the DMCA compliance canon from 2026-05-16.

Stage Three — CSS Sync to Reference Baseline

REF style block overwrites freshly-emitted CSS

The third stage fetches the reference page style block and overwrites the freshly-emitted CSS to keep the visual chrome consistent. The tpl-handler embedded CSS receives periodic updates from baked snapshots, and without this sync stage each new deploy would inherit whatever the current bake happens to be. By anchoring the style to the reference baseline, every /updates/ page renders with identical chrome regardless of when it was deployed.

Stage Four — Discover Meta Injection

og:image set + twitter set + article timestamps

The fourth stage injects the meta tags that tpl-handler does not emit by default. These include og:image with the hero URL, the og:image dimensions and alt attribute, the og:image:type, the twitter:card set to summary_large_image, the twitter:image and twitter:image:alt, and the article:published_time plus article:modified_time. The reference page acquired these via discover-optimize.py, but the /updates/ tool handles them inline because there is no separate Discover stage in the /updates/ chain.

Stage Five — LOCKED-LOGO Plus Canon Dimensions

270x152 header + 180x101 footer + Card 2 compress

The fifth stage reuses the locked_logo_swap function from the main pillar deploy tool through an importlib bridge. This swaps any png logo references to webp variants, applies the canonical dimensions of 270 by 152 pixels for the header and sidebar Card 1 logos, and 180 by 101 pixels for the footer logo. The same stage also applies the apply_post_generate_canon function which adjusts footer-inner padding and compresses the sidebar Card 2 markup to the canonical Browse Reviews layout.

Stage Six — hreflang Plus Sitemap Plus CF Purge

en-US alternate + 141 URLs + purge incl hero

The sixth stage cluster handles three small but important operations. The hreflang tag injection adds en-US and x-default alternates pointing to the same URL, giving Google a clean language signal. The sitemap append writes the new URL into sitemap.xml with a priority of 0.7, slightly lower than the main pillar priority of 0.8 to reflect the typically more time-bound nature of news content. The CF purge clears the page URL and the hero image URL together, preventing the 404 cache poisoning issue that surfaced during earlier dummy deploys.

Stage Seven — Canon Sweep

Hub-1 uniformity idempotent helper

The seventh stage runs the canon-sweep helper which applies any remaining canon adjustments that the earlier stages did not handle. These include DMCA author cleanup, CSS color alignment to the Hub 1 baseline, sidebar uniformity checks, favicon set verification, and WriteHuman markdown leak removal. The sweep is idempotent so it is safe to run on every deploy regardless of whether the page was already canonical.

Stage Eight — On-page Validator

10-dimension strict gate at end of chain

The eighth and final stage runs the on-page validator in strict mode against the live URL. The validator checks ten dimensions including title length, meta description length, H1 count, H2 count, og and twitter title length, schema presence, brand duplication detection, breadcrumb consistency, and title-to-H1 semantic consistency. Any warnings are surfaced for review but the tool does not retroactively undo the deploy. The tool reports the final URL when all stages complete successfully.

Chain Validation Outlook

Production-ready for real /updates/ drops

This page is the first simple end-to-end chain test for the /updates/ scope after the Phase 2 hardening was applied. If this deploy completes successfully and the resulting page passes the post-deploy verify checks, the chain is confirmed working for future /updates/ content drops. The next step is to use the tool for real editorial content rather than chain-validation dummies. The reference page 10 Best JRPG Soundtracks Streaming 2026 shows what production content looks like at this scope, and the broader RPG canon provides the topical context that /updates/ content draws from.

If the chain reveals any new gaps that the earlier dummy deploys did not surface, those gaps go into a follow-up canon entry and the tool gets another hardening pass. The goal is for the tool to be production-ready for any future /updates/ deploy without manual touch-up after the run completes. The /updates/ content type fits a different role in the site than the main pillars or the /id/ subdirectory pages, handling time-bound editorial content where the publish date matters and the audience expects a fresher angle. The visual chrome stays consistent across all three scopes because the underlying brand identity does not change with the content type.

Beyond the structural canon, the operational expectation for /updates/ deploys is that they happen more frequently than main pillars. Where a main pillar might ship once every two weeks, the /updates/ slot can absorb weekly or even bi-weekly drops without saturating the silo or competing with the evergreen pages. That cadence depends on having a content pipeline that produces drafts at the right velocity, and on the tool being reliable enough that each drop does not require manual intervention. The chain validation work that this dummy page exercises is the precondition for that cadence — once the tool is trusted, the editorial work can focus on the content rather than the deploy mechanics.

Editorial decisions about what belongs in /updates/ rather than as a main pillar come down to the durability of the topic. A page that will still be relevant in eighteen months belongs in main pillars. A page that captures a specific 2026 release window or a 2026 trend belongs in /updates/. The structural template handles both equally well, and the canon-sweep stage applies the same chrome regardless of which scope was used to deploy.