SEO / Portfolio / Public Site

Recursive Improvement Prompt — v9.0.5 Installed Runtime, UX Evidence, and Live-Parity Closure Pass

Report summary

This prompt continues the MikeKappel.com WordPress theme implementation loop from the corrected v9.0.4 package.

Status
Research archive item
Category
SEO / Portfolio / Public Site
Length
590 words
Reading time
3 minutes
Report type
evaluation

Key topics

  • SEO / Portfolio / Public Site
  • SEO
  • Portfolio
  • Public Site
  • AI
  • UAIX
  • UAI
  • WordPress
  • .NET

Research provenance

Archive status
Research archive item
Content identity
sha256:b598249374e596e018cfbb38037b76cdd9c946c11f414ae0e3e140a5185ab86a

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

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

This prompt continues the MikeKappel.com WordPress theme implementation loop from the corrected v9.0.4 package.

Non-negotiable recursive-delivery rule:

Every completed pass must deliver both:

  1. A standalone next recursive improvement prompt file.
  2. The full contents of that next prompt pasted in the final response under a clearly labeled section.

Do not rely only on a ZIP, report, summary, or artifact list. Do not omit the full next prompt.


0. Source package and target package

Start from:

/mnt/data/mikekappel-enterprise-ai-prod-theme-v9.0.4.zip

Create:

/mnt/data/mikekappel-enterprise-ai-prod-theme-v9.0.5.zip

Mission: make v9.0.5 an Installed Runtime, UX Evidence, and Live-Parity Closure Pass.

v9.0.0 introduced the major visual, information-architecture, and machine-readable review redesign. v9.0.1 integrated the design brief and deepened case-study/evidence paths. v9.0.2 added compact-navigation CSS parity and package-local component QA. v9.0.3 refreshed runtime-parity metadata and documented public deployment drift. v9.0.4 integrated the uploaded page-by-page UI/UX review and visual look-and-feel critique into bounded WordPress theme refinements: recruiter fast-scan summaries, Experience role anchors, semantic timeline headings, Evidence Map plain-language purpose, Case Studies chooser guidance, Research Search filter guidance, responsive table labels, stronger 16px body text override, and card/touch-target/long-token wrapping guards.

v9.0.5 should not redesign from scratch. It should prove or close runtime parity and continue only small UX/accessibility fixes found by live testing.


1. Baseline and orientation rules

Use a fresh working directory. Do not modify the baseline ZIP.

Recommended paths:

WORK=/mnt/data/work_v905
THEME=/mnt/data/work_v905/mikekappel-enterprise-ai-prod-theme
FINAL=/mnt/data/mikekappel-enterprise-ai-prod-theme-v9.0.5.zip

Before editing, read:

AGENTS.md
README.md
.uai/readme.human
.uai/identity.uai
.uai/world-context.uai
.uai/totem.uai
.uai/taboo.uai
.uai/short-term-memory.uai
.uai/long-term-memory.uai
.uai/coding-standards.uai
.uai/public-facing-language-guard.uai
.uai/navigation-compact-menus.uai
route-qa-contract.json
research-dashboard.json
runtime-health.json
research-utility-noindex-inventory.json
case-studies.json
assets/data/case-studies.json
llms.txt
llms-full.txt
.well-known/ai-agent.json
.well-known/openapi.json
api/openapi-3.1.json
api/public-route-index.json
api/documentation-map.json
docs/v9.0.4-ui-ux-source-disposition.md
mk-v9.0.4-change-summary.md if available beside the ZIP
mk-v9.0.4-validation-report.md if available beside the ZIP
mk-v9.0.4-live-render-qa.md if available beside the ZIP
mk-v9.0.4-runtime-deployment-checklist.md if available beside the ZIP
mk-v9.0.4-visual-accessibility-notes.md if available beside the ZIP
mk-v9.0.4-machine-readable-review-path.md if available beside the ZIP

Treat v9.0.4 as the authoritative package baseline.


2. Preserve v9.0.4 outcomes

Do not revert:

WordPress remains server-rendered.
JavaScript remains progressive enhancement.
Top navigation remains no more than seven visible primary choices.
Homepage remains hero-first and not a dense link directory.
Hero headline remains aligned with: AI-assisted enterprise software across .NET, SQL Server & TypeScript.
Resume PDF CTA remains visible.
Contact email remains mike@ns12.com.
Location remains source-backed from package/resume/contact artifacts; Cicero, IL remains the package-backed value unless Mike supplies a newer source.
Visual system remains clean, modern, portfolio-oriented, with charcoal/navy surfaces, readable typography, teal/electric/copper accents, rounded cards, restrained motion, and v9 accessibility guards.
Case studies keep problem, constraint, architecture strategy, implementation evidence, validation method, current status, known limitation, and related-route structure.
Evidence Map -> llms-full.txt -> route/discovery JSON review path remains available.
llms.txt, llms-full.txt, .well-known manifests, OpenAPI, agents metadata, route index, documentation map, architecture status, route governance, quality gates, roadmap status, and site-search index remain available.
Machine-readable discovery states that WordPress is the runtime, JavaScript is progressive enhancement, and discovery does not grant permission for probing, private-data extraction, form automation, unknown-route crawling, or tool execution.
Route QA/data mirrors remain byte-identical where expected.
Private helper data remains PHP-guarded under inc/private-data/.
Compact-navigation CSS parity for .nav-row-v900 remains present.
Focus, contrast, touch-target, reduced-motion, table stacking, and overflow guards remain present.
Experience role anchors and semantic role headings remain present.
Evidence Map plain-language purpose and Research Search guidance remain present.
Case Studies chooser guidance remains present.
.uai/totem.uai and .uai/taboo.uai remain generated-needs-review unless Mike supplies exact approved wording.

3. Primary v9.0.5 objectives

3.1 Prove deployed/runtime package parity before any live QA claim

If a deployed or local WordPress runtime is available, verify at least:

/route-qa-contract.json reports version 9.0.5
/research-dashboard.json reports version 9.0.5
/runtime-health.json reports version 9.0.5 if exposed as a static file
/wp-json/mk/v1/runtime-health reports version 9.0.5 where REST is available

If any tested runtime reports an older version, document deployment drift and do not claim installed runtime QA for v9.0.5.

3.2 Complete installed WordPress route/browser QA where available

Validate these routes as real HTTP/browser pages or endpoints only after version parity is proven:

/
/career/
/experience/
/case-studies/
/evidence-map/
/research-dashboard/
/research-search/
/report-reader/
/reports/
/resume/
/portfolio-review-guide/
/contacts/
/llms.txt
/llms-full.txt
/.well-known/ai-agent.json
/.well-known/openapi.json
/api/openapi-3.1.json
/api/public-route-index.json
/api/documentation-map.json
/route-qa-contract.json
/research-dashboard.json
/runtime-health.json
/sitemap.xml
/robots.txt

For each route, record:

HTTP status
final URL
runtime version evidence if available
page title or endpoint type
PHP warning/notice/fatal text if present
breadcrumb duplication if present
current-page breadcrumb link if present
major visual/layout regression if present
text-extraction/accessibility regression if present
noindex/noarchive/nosnippet behavior where applicable

If no installed runtime is available, use static/package checks and local component fixtures only, and document the limitation.

3.3 Validate WordPress REST endpoints where runtime exists

If WordPress is available, validate:

/wp-json/mk/v1/runtime-health
/wp-json/mk/v1/route-qa-contract
/wp-json/mk/v1/report-search
/wp-json/mk/v1/reports-search
/wp-json/mk/v1/reports
/wp-json/mk/v1/report-reader-index
/wp-json/mk/v1/report-stale-index
/wp-json/mk/v1/research-search
/wp-json/mk/v1/research-dashboard
/wp-json/mk/v1/research-search-performance
/wp-json/mk/v1/research-search-shards
/wp-json/mk/v1/profile
/wp-json/mk/v1/resume
/wp-json/mk/v1/evidence-map

Expected:

Responses are valid JSON.
Runtime REST endpoint count remains 14 unless intentionally changed and documented.
Runtime route count remains 14 unless intentionally changed and documented.
Static artifact count remains 32 unless intentionally changed and documented.
Private helper artifact count remains 4 unless intentionally changed and documented.
Private helper indexes are not exposed as public JSON.
Search query inputs are normalized, bounded, and sanitized.

3.4 Validate v9.0.4 UX changes in real pages

In a real browser/runtime when possible, verify:

/career/ includes the fast-scan section and remains readable without dense table-first behavior.
/experience/ includes role jump anchors, semantic role headings, dates/time text, and no timeline overflow.
/case-studies/ includes chooser guidance and consistent card rhythm.
/evidence-map/ includes a plain-language purpose section before technical route detail.
/research-search/ includes source-filter guidance before the workbench.
Tables stack cleanly on phone widths.
Body copy remains at least 16px.
Details/summary and filter controls have adequate touch targets.
Long code/route labels wrap without horizontal overflow.

3.5 Responsive navigation and accessibility QA

Use a real browser where possible. Test at least:

390x844
761x768
820x768
980x768
1366x560
1366x768

Check:

Compact menu opens/closes.
Escape closes menus/disclosures.
Outside click closes menus where intended.
Link click closes compact menu where intended.
Focus returns to visible menu toggle where intended.
aria-expanded, aria-hidden, inert, data-state, and descendant tab-stop fallback remain synchronized.
Header/dropdown z-index keeps panels above cards.
Body scroll behavior remains usable.
No horizontal overflow occurs.
Text contrast remains acceptable in header, footer, hero, cards, buttons, status chips, tables, and route/code labels.
Motion respects prefers-reduced-motion.

Do not claim WCAG certification. Report exact tools and methods if an automated checker is used.

3.6 Research/docs/noindex/discovery boundary QA

Verify with headers/meta/source where possible:

/docs/ remains public curated Architecture Notes.
/docs/ appears in sitemap.xml.
/reports/ remains noindex Research Archive.
/report-reader/, /research-search/, /research-dashboard/, /route-qa-contract.json, /research-dashboard.json, and utility JSON mirrors remain noindex/noarchive/nosnippet or disallowed/omitted as intended.
robots.txt disallows utility/research surfaces but does not expose private helper data.
Private helper artifacts remain PHP-guarded under inc/private-data/.
Private helper indexes are not mirrored to public JSON or public route indexes.

3.7 Case-study and evidence source-boundary tightening

Review active case-study and evidence records for unsupported claims.

Rules:

Do not invent client names, dates, metrics, confidential architecture, endorsements, certifications, or production outcomes.
Each selected case study should include a validation method and a not-claimed boundary.
Each case study should link to evidence-map, resume, docs, llms-full, or route JSON where source-backed.
Keep case-study prose concise and visually scannable.

3.8 Metadata update

Set current version to:

9.0.5

Inspect and update current-version surfaces:

style.css
functions.php
theme.json
README.md
AGENTS.md
docs/**/*.md
route-qa-contract.json
assets/data/route-qa-contract.json
research-dashboard.json
assets/data/research-dashboard.json
runtime-health.json
research-utility-noindex-inventory.json
assets/data/research-utility-noindex-inventory.json
uai-memory-manifest.json
assets/data/uai-memory-manifest.json
uai-memory-system.json
assets/data/uai-memory-system.json
case-studies.json
assets/data/case-studies.json
llms.txt
llms-full.txt
.well-known/*.json
api/**/*.json
.uai/**/*.uai
.uai/**/*.json
.uai/exports/*.txt

Prior v9.0.4 references may remain only in changelog/history/report context.


4. Hard constraints

Do not:

Convert the site into a client-only SPA.
Convert the site into Angular, React, Next.js, Flask, FastAPI, Python WSGI, or a static-only generator.
Add a production Node server.
Add Composer/npm/build-runtime dependencies.
Add database migrations.
Add network probing, private-network scans, external uptime polling, shell execution, credential checks, uploads, analytics, ads, CRM, payment capture, email capture, or automatic deployment behavior.
Add secrets, credentials, tokens, private client data, private source code, or deployment-specific values.
Fabricate biography, job history, client names, metrics, endorsements, certifications, legal claims, security audits, or compliance claims.
Move PHP-guarded private helper data into public JSON.
Expose private/default-hidden retrieval boundaries in public UI copy.
Delete raw reports unless Mike explicitly requests deletion.
Add heavy animation libraries or stock image dependencies.
Add unverified portraits, logos, phone numbers, LinkedIn URLs, or client imagery.
Claim WCAG/SOC2/ISO/UAIX/runtime-safety certification without formal evidence.

5. Validation requirements

Run from the extracted theme root:

php -l functions.php
find . -type f -name '*.php' -print0 | sort -z | xargs -0 -n1 php -l

python3 - <<'JSON_CHECK'
import json
from pathlib import Path
failures=[]
count=0
for path in sorted(Path('.').rglob('*.json')):
    try:
        json.loads(path.read_text(encoding='utf-8'))
        count += 1
    except Exception as exc:
        failures.append((str(path), str(exc)))
if failures:
    for path, exc in failures:
        print(f'JSON FAIL: {path}: {exc}')
    raise SystemExit(1)
print('json_files', count)
JSON_CHECK

python3 - <<'JSONLD_CHECK'
import json
from pathlib import Path
failures=[]
count=0
for path in sorted(Path('.').rglob('*.jsonld')):
    try:
        json.loads(path.read_text(encoding='utf-8'))
        count += 1
    except Exception as exc:
        failures.append((str(path), str(exc)))
if failures:
    for path, exc in failures:
        print(f'JSONLD FAIL: {path}: {exc}')
    raise SystemExit(1)
print('jsonld_files', count)
JSONLD_CHECK

node --check assets/js/site.js

Mirror checks:

cmp -s route-qa-contract.json assets/data/route-qa-contract.json
cmp -s research-dashboard.json assets/data/research-dashboard.json
cmp -s uai-memory-manifest.json assets/data/uai-memory-manifest.json
cmp -s uai-memory-system.json assets/data/uai-memory-system.json
cmp -s research-utility-noindex-inventory.json assets/data/research-utility-noindex-inventory.json
cmp -s navigation-groups.json assets/data/navigation-groups.json
cmp -s case-studies.json assets/data/case-studies.json
cmp -s evidence-map.json assets/data/evidence-map.json

Content and claim scans:

grep -R "current version.*9\.0\.4\|version is 9\.0\.4" -n . || true
grep -R "current version.*8\.8\|share version 8\.8\|version is 8\.8" -n . || true
grep -R "WCAG certified\|SOC 2 certified\|ISO certified\|formal UAIX certification\|runtime safety certification\|guaranteed production" -n . || true
grep -R "lorem ipsum\|TODO\|FIXME\|placeholder" -ni . || true
grep -R "documentation\.\.NET\|modernization\.SQL\|Power BI/DAX\.TypeScript\|app\.LongTerm\|software\.CI/CD\|engagement\.Angular/RxJS\|AI\.NET\|C#ASP.NET" -n front-page.php header.php footer.php templates inc/content.php assets/js/site.js style.css || true

Also verify:

Route count remains 14 unless intentionally changed and documented.
API route count remains 14 unless intentionally changed and documented.
Static artifact count remains 32 unless intentionally changed and documented.
Private helper artifact count remains 4 unless intentionally changed and documented.
Research Dashboard active/retired/stale/error counts remain 59 / 121 / 9 / 0 unless intentionally changed and documented.
Case studies remain at least 3 source-grounded records with deep evidence fields; v9.0.4 had 6.
Resume PDF and DOCX exist.
.uai/totem.uai and .uai/taboo.uai remain generated-needs-review.

Package checks:

unzip -tq /mnt/data/mikekappel-enterprise-ai-prod-theme-v9.0.5.zip
python3 - <<'ZIP_CHECK'
import zipfile
from pathlib import Path
zip_path = Path('/mnt/data/mikekappel-enterprise-ai-prod-theme-v9.0.5.zip')
with zipfile.ZipFile(zip_path) as z:
    names = [n for n in z.namelist() if n and not n.endswith('/')]
    roots = sorted({n.split('/')[0] for n in names})
    bad = z.testzip()
    blocked = [n for n in names if any(part in n for part in ['__MACOSX','node_modules/','vendor/','.git/']) or n.endswith('~')]
print('roots', roots)
print('bad', bad)
print('blocked_entries', len(blocked))
if roots != ['mikekappel-enterprise-ai-prod-theme']:
    raise SystemExit('ZIP root check failed')
if bad is not None:
    raise SystemExit(f'Bad ZIP member: {bad}')
if blocked:
    raise SystemExit('Blocked ZIP entries present')
ZIP_CHECK

6. Browser/component QA

Use installed WordPress runtime if available. If unavailable, use static/component fixtures and document the limitation.

Viewport matrix:

1366x768
1366x560
980x768
820x768
761x768
390x844

Check:

Homepage first viewport visual hierarchy
Career fast-scan section
Experience role anchors and semantic timeline cards
Case-study chooser panel
Evidence Map plain-language purpose
Research Search filter guidance
Header/menu open, close, Escape, outside-click, link-click, focus return
No horizontal overflow
Responsive table stacking
Card wrapping
Skills chips/icons readability
Case-study card readability
Experience/career path readability
Resume/contact CTA visibility
Evidence-map path readability
llms.txt and JSON route readability
Reduced-motion behavior where possible

Do not claim installed WordPress runtime QA unless a real runtime was used and proven to be running v9.0.5.


7. Required deliverables

Produce:

/mnt/data/mikekappel-enterprise-ai-prod-theme-v9.0.5.zip
/mnt/data/mk-v9.0.5-change-summary.md
/mnt/data/mk-v9.0.5-validation-report.md
/mnt/data/mk-v9.0.5-live-render-qa.md
/mnt/data/mk-v9.0.6-next-prompt.md

Also produce if meaningful:

/mnt/data/mk-v9.0.5-runtime-deployment-checklist.md
/mnt/data/mk-v9.0.5-visual-accessibility-notes.md
/mnt/data/mk-v9.0.5-machine-readable-review-path.md
/mnt/data/mk-v9.0.5-ux-evidence-followup.md

8. Report requirements

mk-v9.0.5-change-summary.md

Include:

baseline package
output package
files changed
installed/deployed runtime findings and fixes
UX evidence findings and fixes
visual/accessibility changes
responsive navigation changes
case-study/evidence source-boundary changes
machine-readable review path changes
metadata/version changes
.uai bookkeeping changes
known limitations

mk-v9.0.5-validation-report.md

Include:

PHP lint result
JS syntax result
JSON parse result
JSON-LD parse result
mirror checks
route count
API count
static artifact count
private helper count
Research Dashboard counts
case-study deep-field count
resume PDF/DOCX presence
uai totem/taboo state
stale version grep review
forbidden claim grep review
placeholder grep review
run-together text grep review
design/accessibility checks
ZIP integrity
single-root ZIP validation
SHA-256
what was not run and why

mk-v9.0.5-live-render-qa.md

Include:

tested environment
runtime version proof or deployment-drift caveat
routes/components tested
viewport matrix
homepage first viewport observations
career/experience/case-study/evidence/search UX observations
header/menu behavior
keyboard behavior
focus behavior
no-horizontal-overflow status
responsive table status
card wrapping
skills/case-study/career/contact readability
research/report-reader wrapping
contrast observations
reduced-motion handling
REST endpoint observations
not-run items and why

mk-v9.0.6-next-prompt.md

Must be a complete recursive continuation prompt. Do not omit it. Paste the full contents in the final response.


9. Final response format

Respond with exactly these sections:

## v9.0.5 status summary

## Artifacts

## SHA-256

## Validation summary

## Browser/render QA summary

## Known limitations

## Next recommended pass

## Full recursive next prompt

Under Artifacts, link every required deliverable.

Under Full recursive next prompt, paste the complete contents of mk-v9.0.6-next-prompt.md.

Do not over-claim validation. State exactly what ran and what did not run.