UAIX / AI Memory / Handoff

BarkBowl Improvement Plan for dogfood.creativeexpansion.net

Report summary

The live site already has the right product framing and a stronger-than-average public boundary posture. The homepage explains BarkBowl quickly, keeps the primary navigation short, states the “no money / human review / no runtime control” boundary clearly, and points users to a site-map fallback whe

Status
Research archive item
Category
UAIX / AI Memory / Handoff
Length
3,918 words
Reading time
18 minutes
Report type
evaluation

Key topics

  • UAIX / AI Memory / Handoff
  • UAIX
  • AI Memory
  • Handoff
  • AI
  • UAI
  • WordPress
  • .NET
  • Runtime

Research provenance

Archive status
Research archive item
Content identity
sha256:62ec6080ebae1c81282464d380cf261bd82c16a0926275b84cdab9bfd4ab5674

For citation, use the report title and canonical URL. Archival presence does not establish authorship or promote report statements into portfolio evidence.

Source availability: 24 citation markers in the source export have no recoverable source links. Those markers are omitted from this reader; any supplied bibliography and ordinary links remain. Check the original sources before relying on the cited claims.

This page renders the archived Markdown as safe, formatted HTML. It is background research and does not become a portfolio claim without evidence review.

Full report

On this page

Executive summary

The live site already has the right product framing and a stronger-than-average public boundary posture. The homepage explains BarkBowl quickly, keeps the primary navigation short, states the “no money / human review / no runtime control” boundary clearly, and points users to a site-map fallback when the compact “More” navigation is unavailable. Privacy copy is plain-language and specific, and the Accessibility page at least documents keyboard, focus, motion, and contrast intent. Those choices align well with Teleodynamic’s current emphasis on practical entry routes, bounded claims, inspectable modules, and “evidence before confidence,” and they also align with MikeKappel.com’s current preference for a short human review path with deeper structured evidence left available but secondary.

The largest problem is not basic branding, layout, or copy tone. It is cross-surface truth drift. The homepage, Runtime Verification, Release Manifest, Root File Delivery, HTTP Header Verification, Crawl Governance, Agent Cache Coherence, UAIX Memory Status, Source Freshness Monitor, and UAIX Protected Anchor Status all present a current-looking 1.28.0 / 2026.06.11.030 story, with Runtime Verification reporting PASS, 422 evidence assets, and 91 required route shells. At the same time, Public Diagnostics still renders 1.19.0 with 297 evidence assets and 57 routes, Accessibility still says “Last verified package: 1.20.0,” Machine-Readable Governance still renders 1.22.0, Deployment Runbook still renders 1.14.0, and the live public settings contract at /wp-json/barkbowl/v1/settings/public still serves 1.11.0, 2026.06.11.013, 101 evidence assets, 23 route shells, and only 60 glossary terms. That is the first problem to solve because it breaks the site’s own deployment-trust model.

The second major issue is that several operator pages still put historical incident text and large inline JSON payloads directly in the main human reading flow. That is transparent, but it is not readable enough for public operator UX or assistive-tech UX, and it conflicts with MikeKappel.com’s current pattern of keeping machine-readable files and deeper technical evidence behind a cleaner human-first review path.

The shortest high-impact sequence is: create one canonical release contract and make every page, REST endpoint, and direct file render from it; hard-fail Runtime Verification if the live public contract disagrees; expand no-store/no-cache coverage for operator HTML and deployment JSON; move historical incident notes into clearly labeled history blocks; clean up operator-page presentation; then fix the probable empty-toast residue, formalize favicon delivery, and refresh UAIX memory status so it reflects current UAIX baseline files and handoff rules. Teleodynamic’s current public guidance says machine readers should follow a safe route before widening claims, and the UAIX Memory Package Wizard says launch-baseline packages should include memory-maintenance.uai, identity.uai, world-context.uai, and protected anchors such as totem.uai, taboo.uai, and talisman.uai; BarkBowl’s current public memory page only partially reflects that baseline.

What the live site is doing well and where it drifts

The front door is already good. The homepage explains BarkBowl as “time-commerce dogfooding” disguised as premium kibble, gives two immediate actions, and keeps the primary navigation compact. The site map explicitly says it exists as a no-JavaScript fallback to keep too many routes out of the first-screen header. Privacy is unusually direct about what is collected, why it is collected, and the fact that there is no payment or real dog-food commerce. Accessibility states the intended keyboard, focus, reduced-motion, and contrast behaviors, which is the right kind of plain operational statement even though it needs freshness repair.

Where the site drifts is in the public proof chain. The homepage shows 1.28.0, 2026.06.11.030, 422 evidence assets, and 91 routes. Runtime Verification also shows 1.28.0, 2026.06.11.030, PASS, 72 canonical glossary terms, 422 evidence assets, and 91 required route shells. Release Manifest agrees. But Public Diagnostics still shows 1.19.0, 2026.06.11.021, 297 evidence assets, and 57 routes; Accessibility still says the last verified package is 1.20.0; Machine-Readable Governance still shows 1.22.0; Deployment Runbook still shows 1.14.0; and /wp-json/barkbowl/v1/settings/public still serves 1.11.0, 2026.06.11.013, 101 evidence assets, 23 route shells, and 60 glossary terms. That is not a cosmetic mismatch. It means the site is publishing multiple incompatible “truths” about the same deployment.

The machine-readable and governance model is conceptually strong. Machine-Readable Governance correctly says it is a read-only orientation and direct-file delivery layer and explicitly disclaims certification, DNS mutation, credential validation, model training, private-network probing, draft approval, incident closure, and exact glyph translation. Crawl Governance similarly says crawlability is not safety certification and does not authorize private probing. Those boundaries are well aligned with Teleodynamic’s role map, which keeps Teleodynamic.com as the philosophical fulcrum, UAIX.org as the schema/memory lane, and CreativeExpansion.net as the bounded creative lane rather than a runtime controller.

The presentation layer on operator pages still needs work. Several pages put a large machine payload directly into the main reading flow as “Copyable JSON evidence,” and the public footer still carries a thick list of operator routes. MikeKappel.com’s current homepage and Evidence Map use a better pattern: short human-first review order, curated deeper proof, and machine-readable files after the human route rather than instead of it. BarkBowl should keep the transparency but switch to the same hierarchy.

This assessment also cross-checked the uploaded BarkBowl Improvement Audit, which independently centered cross-surface truth drift as the dominant trust problem, and treated the separate architectural memo as historical context only because its earlier “site inaccessible” assumption no longer matches the live public site.

The table below compiles the major current surface mismatches from the live public site.

SurfaceCurrent public valueWhy it matters
Homepage1.28.0, seed 2026.06.11.030, 422 evidence assets, 91 routesThis is the public front-door story.
Runtime VerificationPASS, 1.28.0, 72 glossary terms, 422 evidence assets, 91 route shellsThis is the strongest current-looking smoke report.
Release Manifest1.28.0, seed 2026.06.11.030, 422 evidence assetsThis is the intended install contract.
Public Diagnostics1.19.0, seed 2026.06.11.021, 297 evidence assets, 57 routesThis is explicitly meant to compare deployment truth, but it is stale.
Accessibility“Last verified package: 1.20.0”This makes the accessibility statement look archival instead of operational.
Machine-Readable Governance1.22.0, seed 2026.06.11.024The machine-reader policy page is stale and still embeds older incident text.
Deployment Runbook1.14.0, seed 2026.06.11.016Operators are being shown outdated deployment instructions.
Public settings JSON1.11.0, seed 2026.06.11.013, 101 evidence assets, 23 route shells, 60 glossary termsThis is supposed to be the primary public contract and is currently the most dangerous stale source.
UAIX Memory Status1.28.0, but embedded check text still says short-term memory was rewritten to “current v1.26 facts only”The current page is partially fresh but still contains stale embedded wording.

Prioritized improvement plan

Because the exact source tree is not public in this audit, the file paths below are logical WordPress targets, not source-confirmed filenames. In practice, these changes will likely land in the BarkBowl plugin REST/settings layer, shared helper functions, seed/migration logic, theme page templates, theme header/footer, and front-end assets. The priorities below are ordered by impact first, then risk reduction, then effort. The ordering is driven directly by the live mismatch pattern shown above.

Recommended changeDescriptionLikely files or paths to changeTesting stepsRollback planEffortRisk
Canonical release contractCreate one shared contract provider for package version, theme version, seeded version, evidence count, glossary count, route shell count, generated UTC, and public diagnostics schema version. Make the homepage card, Runtime Verification, Release Manifest, Public Diagnostics, Deployment Runbook, Accessibility freshness line, Machine-Readable Governance, Root File Delivery, and direct files all read from that one provider at render time.Likely plugin shared helper plus REST controller and theme page templates for /public-diagnostics/, /deployment-runbook/, /machine-readable-governance/, /accessibility/, homepage diagnostics card, and direct-file generators.Verify that every page and JSON route listed in the deployment checklist returns the same package/seed/count set after deployment.Restore previous render callbacks and templates; keep the old release contract output behind a feature flag during the transition.MM
Runtime parity gateChange Runtime Verification so it compares live public endpoint output from /wp-json/barkbowl/v1/settings/public and other public surfaces, not only internally computed expectations. Today Runtime Verification says public diagnostics schema version: 1.28.0 while the live public settings endpoint still serves 1.11.0, which suggests the parity gate is too weak.Likely runtime verifier builder plus REST callback(s) for Runtime Verification and Settings/Public.Make Runtime Verification fail if settings/public disagrees on package, seed, route shell count, glossary count, evidence count, or schema version.Temporarily downgrade the new check from hard fail to warning if it blocks a needed emergency deploy, then re-enable after stabilization.SM
No-store operator pages and no-store deployment JSONApply Cache-Control: no-store, max-age=0 to all operator HTML pages and deployment-sensitive public JSON such as /settings/public, /runtime/verification, /release/manifest, /public-diagnostics/, /deployment-runbook/, /machine-readable-governance/, /root-file-delivery/, /http-header-verification/, /crawl-governance/, /agent-cache-coherence/, /uai-memory-status/, /source-freshness-monitor/, and /live-deployment-gap/.Likely theme functions.php, plugin bootstrap/header helper, and CDN/page-cache rules.Verify headers with curl -I and confirm stale pages no longer survive deploy + purge.Narrow the no-store list if an edge-performance regression appears, but do not remove it from deployment truth surfaces.SL
Refresh stale operator pages and separate historical incidentsPages that intentionally describe historical incidents should put those incidents in a clearly labeled “history” or <details> block rather than mixing them into current-state panels. Machine-Readable Governance still shows a historical liveFinding about an earlier llms.txt 404, Chrome Consistency still foregrounds the old v1.19 legal/accessibility chrome problem, and Deployment Runbook still renders a fully stale release.Theme page templates and whatever shortcode/render layer builds their JSON summaries.Confirm the top summary on each page reflects current package truth; confirm older incidents remain available but are collapsed and clearly labeled as historical.Restore prior page copy revisions if needed.SL
Human-first operator page renderingKeep machine transparency, but move giant inline JSON from primary reading flow into a collapsed <details> section or downloadable artifact. Put a short human summary and clickable verification list first. This directly follows the human-first / machine-second pattern now used on MikeKappel.com.Theme templates for operator pages; likely a shared shortcode or renderer for “copyable JSON evidence” sections.Screen-reader smoke test; keyboard traversal should encounter summary and verification checklist before a massive <pre> block.Re-enable always-expanded JSON if a reviewer insists, but keep it below the summary.SL
Accessibility freshness repairMake the Accessibility page render package version and updated timestamp from live contract data, not hard-coded page text. Expand the test matrix to name actual browser/assistive-tech passes and unresolved known issues./accessibility/ template and shared contract helper.Confirm the page no longer says 1.20.0; add a fresh UTC timestamp after each accessibility/keyboard smoke pass.Revert to previous static copy if template rendering breaks, but keep the stale line removed.SL
Likely empty-toast or live-region cleanupThe operator-supplied screenshot strongly suggests an empty toast/live-region container is visually rendering with a green pill style even when it has no message. Hide the region when empty and refuse to emit empty status messages.Front-end toast controller JS/TS, front-end CSS, possibly template markup for the live region.Load homepage in a fresh browser session before interacting; confirm no empty pill appears. Then trigger a real toast and confirm it announces and dismisses correctly.Remove the CSS/JS override if it breaks real alerts.SL
Formal favicon delivery and governanceAdd a root favicon.ico, PNG companions, and explicit <link rel="icon"> / apple-touch-icon tags. Then make favicon part of the same root-file delivery checklist as the machine-readable and crawl files.Theme header output, theme assets, optional webroot kit, optional direct-file fallback in plugin/bootstrap if root requests route through WordPress.Verify browser tab icon after hard refresh and confirm curl -I /favicon.ico returns an icon content type.Restore prior icon assets if branding or caching misbehaves.SL
UAIX memory status alignmentUpdate UAIX Memory Status so its public activeMemoryFiles reflect current UAIX baseline and current BarkBowl anchor handling. The page should not still embed “current v1.26 facts only” phrasing under a 1.28.0 page, and it should cross-link to protected anchor status and current long-memory paths more explicitly.UAIX memory status page template and whatever generates its JSON evidence.Verify page lists current baseline files and anchor state; confirm no stale embedded package references remain.Restore prior page version if necessary, but keep stale wording retired.SL

The most important implementation change is the single source of truth for package, seed, counts, and timestamps. This is the simplest path to eliminate the current fork between homepage/runtime/release pages and the stale public JSON/page surfaces.

<?php
/**
 * Example only. Exact filenames and option keys are unspecified.
 */
function barkbowl_release_contract(): array {
    return [
        'packageVersion'            => defined('BARKBOWL_TIME_CART_VERSION') ? BARKBOWL_TIME_CART_VERSION : 'unknown',
        'themeVersion'              => wp_get_theme()->get('Version'),
        'seededVersion'             => (string) get_option('barkbowl_seeded_version', ''),
        'lastSeededVersion'         => (string) get_option('barkbowl_last_seeded_version', ''),
        'lastSeededAtUtc'           => (string) get_option('barkbowl_last_seeded_at_utc', ''),
        'evidenceAssetCount'        => (int) barkbowl_count_evidence_assets(),
        'routeShellCount'           => (int) barkbowl_count_required_route_shells(),
        'glossaryCount'             => (int) barkbowl_count_canonical_glossary_terms(),
        'publicDiagnosticsVersion'  => '1.28.0',
        'generatedAtUtc'            => gmdate('c'),
    ];
}

The second essential change is a hard parity gate inside Runtime Verification. Right now the smoke report says the public diagnostics schema is 1.28.0 while the public settings contract still serves 1.11.0. The most plausible explanation is that Runtime Verification is checking an internal expectation rather than the live public JSON contract. That should become a real live comparison.

<?php
/**
 * Example only. Force Runtime Verification to compare live public output.
 */
function barkbowl_verify_public_settings_parity(): array {
    $expected = barkbowl_release_contract();

    $public = barkbowl_build_public_settings_payload(); // same exact builder used by the live endpoint

    $checks = [
        'packageVersion'           => $public['packageVersion'] === $expected['packageVersion'],
        'themeVersion'             => $public['themeVersion'] === $expected['themeVersion'],
        'seededVersion'            => $public['seededVersion'] === $expected['seededVersion'],
        'evidenceAssetCount'       => (int) $public['evidenceAssetCount'] === (int) $expected['evidenceAssetCount'],
        'routeShellCount'          => (int) $public['routeShellCount'] === (int) $expected['routeShellCount'],
        'glossaryCount'            => (int) $public['glossaryCount'] === (int) $expected['glossaryCount'],
        'publicDiagnosticsVersion' => $public['publicDiagnosticsSchemaVersion'] === $expected['publicDiagnosticsVersion'],
    ];

    return [
        'status' => in_array(false, $checks, true) ? 'FAIL' : 'PASS',
        'checks' => $checks,
    ];
}

The current BarkBowl operator pages already describe the needed cache and purge discipline: install the ZIPs, run the seeder twice, save permalinks, clear every cache layer, and then verify pages and direct files with a private window and curl -I. What is missing is stricter automatic cache behavior on the most critical truth surfaces.

<?php
/**
 * Example only. Apply no-store to operator truth pages and deployment JSON.
 */
function barkbowl_send_operator_cache_headers(): void {
    if (is_admin()) {
        return;
    }

    $request_uri = $_SERVER['REQUEST_URI'] ?? '';
    $no_store_paths = [
        '/runtime-verification/',
        '/public-diagnostics/',
        '/release-manifest/',
        '/deployment-runbook/',
        '/machine-readable-governance/',
        '/root-file-delivery/',
        '/http-header-verification/',
        '/crawl-governance/',
        '/agent-cache-coherence/',
        '/chrome-consistency/',
        '/accessibility/',
        '/uai-memory-status/',
        '/source-freshness-monitor/',
        '/live-deployment-gap/',
        '/uai-protected-anchor-status/',
        '/wp-json/barkbowl/v1/settings/public',
        '/wp-json/barkbowl/v1/runtime/verification',
        '/wp-json/barkbowl/v1/release/manifest',
    ];

    foreach ($no_store_paths as $path) {
        if (str_starts_with($request_uri, $path)) {
            header('Cache-Control: no-store, max-age=0', true);
            header('Pragma: no-cache', true);
            header('X-Content-Type-Options: nosniff', true);
            return;
        }
    }
}
add_action('send_headers', 'barkbowl_send_operator_cache_headers', 20);

The operator-supplied screenshot below is the clearest current UI defect. Based on shape, placement, and the prior pattern already described in BarkBowl’s own release history, the most likely cause is an empty toast or aria-live region rendering with pill styling while empty. That is a low-effort / low-risk fix and should be bundled with the favicon work. The diagnosis is probable, not source-proven.

[Figure omitted from source export: Operator-provided screenshot showing likely empty toast or live-region residue near the bottom-center of the viewport]

/* Example only */
.bb-toast-region[hidden],
.bb-toast-region:empty {
  display: none !important;
}
// Example only
function showToast(message, timeout = 4000) {
  const region = document.querySelector('.bb-toast-region');
  const text = (message || '').trim();
  if (!region || !text) return;

  region.hidden = false;
  region.textContent = text;

  clearTimeout(region._hideTimer);
  region._hideTimer = window.setTimeout(() => {
    region.textContent = '';
    region.hidden = true;
  }, timeout);
}
<?php
/* Example favicon head output */
function barkbowl_output_favicons(): void {
    $theme_uri = get_stylesheet_directory_uri();
    echo '<link rel="icon" href="' . esc_url(home_url('/favicon.ico')) . '" sizes="any">';
    echo '<link rel="icon" type="image/png" sizes="32x32" href="' . esc_url($theme_uri . '/assets/images/favicon-32.png') . '">';
    echo '<link rel="apple-touch-icon" href="' . esc_url($theme_uri . '/assets/images/favicon-192.png') . '">';
}
add_action('wp_head', 'barkbowl_output_favicons', 1);
add_action('admin_head', 'barkbowl_output_favicons', 1);

Finally, the operator pages should adopt a human-first summary / machine-second artifact layout, which is closer to the current MikeKappel evidence model and much friendlier to keyboard and screen-reader use. MikeKappel’s Evidence Map explicitly keeps code-like resources behind a readable human path and tells AI evaluators to review the human pages first. BarkBowl should do the same with its operator screens.

<section aria-labelledby="bb-verify-files">
  <h2 id="bb-verify-files">Verify direct files</h2>
  <p>Confirm the files below return the current package and seed after deploy and purge.</p>

  <ul class="bb-checklist">
    <li><a href="/llms.txt">/llms.txt</a></li>
    <li><a href="/llms.json">/llms.json</a></li>
    <li><a href="/.well-known/ai-agent.json">/.well-known/ai-agent.json</a></li>
    <li><a href="/agent-start.json">/agent-start.json</a></li>
    <li><a href="/safe-read-order.json">/safe-read-order.json</a></li>
  </ul>

  <details>
    <summary>Open machine payload</summary>
    <pre tabindex="0">…JSON here…</pre>
  </details>
</section>

Secondary improvements across telemetry, security, and testing

The next group of changes is slightly less urgent than the version/cache/parity work, but still worth doing immediately after the public truth surfaces are unified. BarkBowl already records telemetry with UTC timestamps, route context, feature-flag state, and hashed session identifiers, while Teleodynamic currently positions ErrorNotifier.com as the ecosystem’s telemetry and incident lane. That combination strongly supports adding better server-side correlation, error logging, and operator-facing verification that actual server errors were reviewed after deployment.

Recommended changeDescriptionLikely files or paths to changeTesting stepsRollback planEffortRisk
Structured telemetry and server-error reviewAdd correlation IDs to REST responses and server logs, log route, package, seed, request ID, and exception context, and maintain a post-deploy error review checklist covering PHP logs, web server logs, and CDN cache logs.Plugin bootstrap, REST middleware, logger wrapper, deployment docs, maybe admin diagnostics page.Trigger a known safe handled error path; confirm correlation ID appears in response and logs. Review logs after deploy and record outcome in UAIX evidence.Disable detailed structured logs if they expose too much internal context, but keep correlation IDs and UTC timing.MM
Restrictive CORS and header hardeningKeep same-origin defaults for BarkBowl public JSON unless a specific cross-origin browser use case is required. Avoid wildcard Access-Control-Allow-Origin on governance JSON. Add X-Content-Type-Options: nosniff everywhere and verify declared content types.Server config, plugin/header helper, CDN rules.Use curl -I for all root files and public JSON; verify content type and absence of unsafe wildcard CORS unless intentionally required.Revert the new header rule if it blocks a real browser integration, then re-add with an explicit allowlist.SL
Operator-owned DNS / RDAP / TLS checklistKeep DNS, RDAP, DNSSEC, CAA, SPF, DMARC, and certificate review as an operator checklist, not a WordPress mutation layer; BarkBowl’s own crawl/governance pages already say these are out-of-scope for WordPress runtime control.Docs only, deployment runbook, maybe operator evidence page.Confirm the checklist is present and clearly labeled operator-owned.None beyond doc revert.SL
Accessibility smoke matrixMove from intent statements to a maintained smoke matrix: keyboard-only on desktop and mobile width, NVDA/Firefox, VoiceOver/Safari, reduced motion, and visible focus. BarkBowl’s Accessibility page already says final contrast still requires browser verification.Accessibility page, long-term docs, QA checklist.Run each matrix item on homepage, site map, Time Bowl, Quiz, Runtime Verification, Public Diagnostics, and operator pages.If a matrix line cannot be completed, record it as known limitation rather than deleting it.ML
Core Web Vitals and page-weight disciplineMeasure homepage, Learn, Quiz, Runtime Verification, and Public Diagnostics in Lighthouse / PageSpeed after the JSON-heavy operator pages are cleaned up. Treat giant always-visible JSON blocks and overgrown operator footers as avoidable page weight, even on non-customer pages.Theme templates, asset pipeline, operator template markup.Run Lighthouse mobile and desktop before and after cleanup; watch LCP, INP, and CLS.Reintroduce deferred details/download links rather than reverting to giant inline payloads.ML

A small structured logger wrapper is one practical way to make deployment evidence much more credible without turning BarkBowl into a private telemetry platform. The live site already uses UTC consistently on many diagnostics pages, and BarkBowl’s own deployment instructions repeatedly tell the operator to inspect evidence before claiming success.

<?php
/**
 * Example only. Avoid logging secrets or raw private data.
 */
function barkbowl_log_event(string $level, string $message, array $context = []): void {
    $payload = [
        'utc'             => gmdate('c'),
        'level'           => $level,
        'message'         => $message,
        'packageVersion'  => defined('BARKBOWL_TIME_CART_VERSION') ? BARKBOWL_TIME_CART_VERSION : 'unknown',
        'requestId'       => $context['requestId'] ?? wp_generate_uuid4(),
        'route'           => $context['route'] ?? ($_SERVER['REQUEST_URI'] ?? ''),
        'seededVersion'   => get_option('barkbowl_seeded_version', ''),
        'context'         => array_diff_key($context, array_flip(['secret', 'token', 'password'])),
    ];

    error_log(wp_json_encode($payload, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE));
}

For headers and CORS, the simplest policy is: no-store for operator truth pages and deployment-sensitive JSON, short-TTL for direct public files, nosniff everywhere, and no wildcard CORS by default. BarkBowl’s own HTTP Header Verification page already frames content-type checks as live operator evidence rather than certification, which is exactly the right mindset.

# Example only. Vendor/server details are unspecified.
location ~* ^/(runtime-verification|public-diagnostics|release-manifest|deployment-runbook|machine-readable-governance|root-file-delivery|http-header-verification|crawl-governance|agent-cache-coherence|chrome-consistency|accessibility|uai-memory-status|source-freshness-monitor|live-deployment-gap|uai-protected-anchor-status)/?$ {
    add_header Cache-Control "no-store, max-age=0" always;
    add_header X-Content-Type-Options "nosniff" always;
}

location = /llms.txt {
    add_header Cache-Control "public, max-age=300, must-revalidate" always;
    add_header X-Content-Type-Options "nosniff" always;
}

location = /llms.json {
    add_header Cache-Control "public, max-age=300, must-revalidate" always;
    add_header X-Content-Type-Options "nosniff" always;
}

# Only add ACAO if a real browser cross-origin requirement exists.
# add_header Access-Control-Allow-Origin "https://dogfood.creativeexpansion.net" always;

Deployment checklist and verification commands

The sequence below follows BarkBowl’s own Release Manifest, Root File Delivery, HTTP Header Verification, Agent Cache Coherence, and Crawl Governance pages, while correcting for the current stale-surface problem. The single most important verification rule is this: do not claim deployment complete until homepage, Runtime Verification, Public Diagnostics, Machine-Readable Governance, Deployment Runbook, Accessibility, and /wp-json/barkbowl/v1/settings/public all agree.

StepWP admin or operator actionExact thing to verify
Upload codeUpload/update BarkBowl plugin ZIP first, then BarkBowl theme ZIP second, then activate/update as needed.WordPress Admin shows the intended plugin and theme versions.
Run seedOpen BarkBowl → Seeder and run it twice.Seeder is idempotent; seeded version and last-seeded UTC are current.
Rewrite refreshOpen Settings → Permalinks and click Save Changes.Pretty permalinks and root-file rewrite paths work.
Purge all cachesPurge page cache, object cache, CDN/edge cache, and local browser cache. Hard-refresh or use a private window.No old HTML or old JSON survives from previous packages.
Purge explicit URLsPurge the full URL list shown below.Direct files and operator pages all refresh.
Verify current HTML surfacesOpen homepage, Runtime Verification, Release Manifest, Public Diagnostics, Accessibility, Deployment Runbook, Machine-Readable Governance, Root File Delivery, HTTP Header Verification, Crawl Governance, Agent Cache Coherence, and UAIX Memory Status.All show the same package/seed/count truth, and historical incidents are clearly marked historical.
Verify current JSON surfacesCall the public endpoints shown below.settings/public, runtime/verification, and release/deployment/support endpoints agree.
Verify direct filesUse the direct-file loop shown below.Status 200, expected content type, and current package/seed where applicable.
Verify visual issuesCheck the homepage for empty toast residue, confirm favicon/tab icon, inspect header/footer on legal and operator pages, and confirm the More/site-map fallback.No empty green pill; favicon visible after hard refresh; no raw or duplicated nav.
Verify keyboard and AT basicsRun keyboard-only flows on homepage, Learn, Quiz, Time Bowl, site-map fallback, Runtime Verification, Public Diagnostics, and at least one machine-governance page.Logical focus order, visible focus, no focus traps, collapsible JSON is reachable but not first in the path.
Review logsCheck PHP-FPM/Apache/Nginx logs, cache logs, and browser console after deploy.No REST/server errors or unexplained 404s; any warnings are recorded in UAIX evidence rather than ignored.
Record evidenceUpdate .uai/intake-outcome-ledger.uai, progress/decisions as appropriate, and archive deployment outputs.Handoff and deployment closure evidence exists before claiming completion.

Use these exact pages in the human verification pass:

/
 /runtime-verification/
 /release-manifest/
 /public-diagnostics/
 /deployment-runbook/
 /accessibility/
 /machine-readable-governance/
 /root-file-delivery/
 /http-header-verification/
 /crawl-governance/
 /agent-cache-coherence/
 /chrome-consistency/
 /uai-memory-status/
 /source-freshness-monitor/
 /live-deployment-gap/
 /uai-protected-anchor-status/

Use these public JSON and contract endpoints in the machine verification pass:

curl -sS https://dogfood.creativeexpansion.net/wp-json/barkbowl/v1/ping
curl -sS https://dogfood.creativeexpansion.net/wp-json/barkbowl/v1/diagnostics/lite
curl -sS https://dogfood.creativeexpansion.net/wp-json/barkbowl/v1/release/manifest
curl -sS https://dogfood.creativeexpansion.net/wp-json/barkbowl/v1/deployment/parity-lite
curl -sS https://dogfood.creativeexpansion.net/wp-json/barkbowl/v1/surface-agreement/public
curl -sS https://dogfood.creativeexpansion.net/wp-json/barkbowl/v1/settings/public | jq '.data | {
  packageVersion,
  themeVersion,
  seededVersion,
  lastSeededVersion,
  glossaryCount,
  evidenceAssetCount,
  routeShellCount,
  publicDiagnosticsSchemaVersion
}'
curl -sS https://dogfood.creativeexpansion.net/wp-json/barkbowl/v1/runtime/verification
curl -sS https://dogfood.creativeexpansion.net/wp-json/barkbowl/v1/diagnostics/snapshot
curl -sS https://dogfood.creativeexpansion.net/wp-json/barkbowl/v1/deployment/runbook

Use these direct-file checks because BarkBowl’s own Root File Delivery and HTTP Header Verification surfaces say these are the critical machine-readable and crawl files to inspect after deploy and purge.

for u in \
  /llms.txt \
  /.well-known/llms.txt \
  /llms.json \
  /.well-known/ai-agent.json \
  /.well-known/agent-readiness.json \
  /agent-start.json \
  /ai-summary.json \
  /safe-read-order.json \
  /barkbowl-machine-readable-governance.json \
  /barkbowl-agent-file-verification.json \
  /barkbowl-root-file-delivery.json \
  /.well-known/barkbowl-root-file-delivery.json \
  /robots.txt \
  /sitemap.xml \
  /barkbowl-sitemap.xml \
  /favicon.ico
do
  echo "### $u"
  curl -sSI "https://dogfood.creativeexpansion.net$u" | sed -n '1,20p'
  echo
done

Use this explicit CDN/page-cache purge list. The current site already demonstrates why broad pattern purges are not enough; exact URL purges are warranted for release-truth surfaces.

/
 /runtime-verification/
 /release-manifest/
 /public-diagnostics/
 /deployment-runbook/
 /accessibility/
 /machine-readable-governance/
 /root-file-delivery/
 /http-header-verification/
 /crawl-governance/
 /agent-cache-coherence/
 /chrome-consistency/
 /uai-memory-status/
 /source-freshness-monitor/
 /live-deployment-gap/
 /uai-protected-anchor-status/
 /llms.txt
 /.well-known/llms.txt
 /llms.json
 /.well-known/ai-agent.json
 /.well-known/agent-readiness.json
 /agent-start.json
 /ai-summary.json
 /safe-read-order.json
 /robots.txt
 /sitemap.xml
 /barkbowl-sitemap.xml
 /favicon.ico
 /wp-json/barkbowl/v1/settings/public
 /wp-json/barkbowl/v1/runtime/verification
 /wp-json/barkbowl/v1/release/manifest
 /wp-json/barkbowl/v1/deployment/parity-lite
 /wp-json/barkbowl/v1/surface-agreement/public

The header expectations below follow BarkBowl’s current public operator guidance and the recommended hardening changes in this report. The server platform and CDN vendor are unspecified, so treat these as policy targets rather than source-proven current headers. The content-type expectations themselves are explicitly documented on BarkBowl’s Root File Delivery and HTTP Header Verification pages.

Surface typeExpected Content-TypeExpected cachingNotes
Operator HTML pagestext/html; charset=UTF-8Cache-Control: no-store, max-age=0These pages carry release truth and should always prefer freshness.
Deployment-sensitive public JSONapplication/json; charset=UTF-8Cache-Control: no-store, max-age=0Applies to settings/public, runtime, release, parity, surface agreement.
llms.txt, robots.txttext/plain; charset=UTF-8public, max-age=300, must-revalidateShort TTL plus explicit purge after release.
Governance JSON filesapplication/json; charset=UTF-8public, max-age=300, must-revalidateShort TTL plus explicit purge after release.
Sitemap XML filesapplication/xml; charset=UTF-8public, max-age=300, must-revalidateDo not treat sitemap inclusion as certification.
Faviconimage/x-icon or the server’s correct icon typepublic, max-age=86400Hard-refresh browsers after change; browser favicon caches are sticky.
All public filesAdd X-Content-Type-Options: nosniffN/AGood default hardening.
Browser CORSOmit or explicit allowlist onlyN/ADo not use wildcard CORS unless a real browser integration requires it.

If WP-CLI is available, treat it as optional because availability is unspecified. A safe, non-invented baseline is:

wp plugin list | grep barkbowl
wp theme list | grep barkbowl
wp cache flush

Custom seeder commands, option keys, or plugin/theme slugs should only be scripted once their exact names are verified in your runtime.

Roadmap and sequencing

The fastest route to a trustworthy site is to separate quick wins that remove false signals immediately from medium and longer work that improves maintainability, observability, and testing depth. The comparison below assumes one operator plus one engineer can work in parallel. Budget and staffing are otherwise unspecified.

BucketFocusWhy it belongs here
Quick winsCanonical release contract, settings/public repair, Runtime Verification parity gate, no-store/no-cache for operator truth pages, stale Accessibility/Public Diagnostics/Machine-Readable Governance/Deployment Runbook refresh, empty-toast cleanup, favicon plus head tags, collapse JSON payloads, footer rationalizationThese remove the biggest trust failures immediately and do not require deep infrastructure changes.
Medium-termStructured logging with correlation IDs, formal post-deploy log review, explicit historical-vs-current incident separation across all operator pages, more complete UAIX memory status, dedicated favicon verification in root-file delivery, stronger keyboard/AT matrixThese improve resilience and operator confidence after surface parity exists.
Longer-termCore Web Vitals tuning, performance budget for operator templates, optional ErrorNotifier integration, broader route-contract automation, regular live source freshness review, operator documentation for DNS/RDAP/TLS checklistThese are valuable, but they do not matter as much as fixing the current public truth split first.
gantt
    title BarkBowl improvement sequence
    dateFormat  YYYY-MM-DD
    axisFormat  %b %d

    section Immediate stabilization
    Canonical release contract and shared render source     :active, a1, 2026-06-16, 2d
    settings/public repair and runtime parity hard-fail     :a2, after a1, 1d
    No-store headers and CDN purge rules                    :a3, after a1, 1d
    Refresh stale operator pages                            :a4, after a1, 2d

    section UI and accessibility cleanup
    Empty toast and ARIA live-region cleanup                :b1, after a2, 1d
    Favicon delivery and verification                       :b2, after a2, 1d
    Human-first operator page layout                        :b3, after a4, 2d
    Footer and navigation weight reduction                  :b4, after b3, 1d

    section Governance and memory hygiene
    UAIX memory status alignment                            :c1, after a4, 1d
    Historical-versus-current incident separation           :c2, after a4, 1d
    Machine-readable route and root-file verification pass  :c3, after a3, 1d

    section Observability and validation
    Structured logging and post-deploy error review         :d1, 2026-06-23, 2d
    Keyboard and assistive-tech smoke matrix                :d2, after b3, 2d
    Core Web Vitals and page-weight pass                    :d3, after b3, 2d
    DNS/RDAP/TLS operator checklist publication             :d4, after d1, 1d

If you complete only the first four work items, BarkBowl will stop telling multiple incompatible stories about the same release, which is the single highest-value improvement. After that, the UI and governance cleanup becomes much easier because every page, direct file, and verification route will already be reading from the same truth source.