Plain Vanilla PHP Deployment Contract and Packaging Mistake Notes
Updated UTC: 2026-06-26T00:00:00Z
Purpose
This document is durable long-term project memory for ModelBreeder.com. It records a packaging mistake and the corrected deployment contract so future agents do not repeat the same error.
The project is a plain vanilla PHP site. It is not a WordPress site, not a WordPress theme, not a CMS plugin, and not a framework scaffold. The deliverable is a root-extractable PHP web site ZIP containing the front controller, assets, content, docs, source code, tests, and .uai project memory.
Original request anchor
The controlling request was, in substance:
Make ModelBreeder.com as a plain vanilla PHP site. Use shared headers and footers and best practices for an enterprise PHP content-heavy site. Use no database at this point. Put all reports in a
/docsfolder in the site ZIP so nothing is lost. Make the site highly informative, well organized, and able to teach people how to build highly adaptive systems. Use pseudocode examples.
This request defines the artifact type. Later requests to add .uai memory, contact pages, reports, benefits, or theory expansion are changes inside that plain PHP site unless the owner explicitly asks for a different platform.
What went wrong
A later package was generated as a WordPress-installable theme because a WordPress installer error was treated as evidence that the project should become a WordPress theme. That inference was wrong.
The installer message, "The theme is missing the style.css stylesheet," only describes why WordPress rejected a ZIP that was uploaded through WordPress's theme installer. It does not override the original site architecture. The correct response is to state that the ZIP is not intended for the WordPress theme installer and to continue producing a plain PHP root-deploy package.
Correct interpretation of installer errors
If a user uploads this site ZIP into a WordPress theme installer, the installer will expect WordPress theme files such as style.css, functions.php, and WordPress templates. ModelBreeder.com should not add those files merely to satisfy the wrong installer.
The correct deployment path is:
- Back up the domain web root.
- Extract the ModelBreeder.com root ZIP directly into the web root.
- Confirm
index.php,.htaccess,assets/,content/,docs/,src/,.uai/, andagent-file-handoff/are top-level siblings. - Confirm
public/,wiki/,wp-content/,style.css, andfunctions.phpare absent unless a future human explicitly changes the platform. - Visit
/health,/start-here,/research,/contact, and/assets/css/app.css.
Artifact rule
Future releases must produce only a plain PHP root ZIP unless the human explicitly says something equivalent to:
- "convert ModelBreeder.com to WordPress";
- "create a WordPress theme for ModelBreeder.com";
- "make a plugin or CMS version".
Ambiguous phrases such as "theme," "upload," "install," or "site did not work" are not enough to change platform. Treat them as a deployment context to diagnose, not a platform migration order.
Memory organization rule
Use the project memory topology requested by the owner:
AGENTS.md
.uai/*.uai
.uai/long-term-memory.uai # pointer-only ledger
/docs/*.md # durable long-term reports and project notes
/docs/manifest.json # source integrity index
agent-file-handoff/Content
agent-file-handoff/ImprovementDo not create a wiki/ directory for this project. /docs is the long-term body-memory location, and .uai/long-term-memory.uai points to /docs records.
Release preflight
Before packaging, verify:
FUNCTION verify_plain_php_site_package(root)
REQUIRE file_exists(root / "index.php")
REQUIRE file_exists(root / ".htaccess")
REQUIRE directory_exists(root / "assets")
REQUIRE directory_exists(root / "content")
REQUIRE directory_exists(root / "docs")
REQUIRE directory_exists(root / "src")
REQUIRE directory_exists(root / ".uai")
REQUIRE directory_exists(root / "agent-file-handoff")
FORBID file_exists(root / "style.css") // WordPress theme marker
FORBID file_exists(root / "functions.php") // WordPress theme marker
FORBID directory_exists(root / "wp-content")
FORBID directory_exists(root / "public")
FORBID directory_exists(root / "wiki")
REQUIRE zip_has_no_wrapper_folder()
REQUIRE health_route_reports_current_version()
REQUIRE homepage_links_to_contact()
REQUIRE docs_manifest_hashes_match()
REQUIRE uai_memory_points_to_docs()
END FUNCTIONPrevention notes
- Do not infer a new platform from an error produced by the wrong installer.
- Do not create parallel WordPress artifacts as an alternate deliverable for this project.
- Do not add root
style.cssorfunctions.phpto make WordPress accept the archive. - Do not describe the package as a theme, plugin, CMS artifact, or WordPress site.
- Do not bury the correction only in chat; keep it in
AGENTS.md,.uaiactive memory, and/docsdurable memory. - Keep the footer and
/healthpage version in sync withVERSION,config/site.php, andconfig/uai.php.
Disposition
The packaging mistake is recorded so it can be audited and prevented. The corrected project truth is: ModelBreeder.com is a root-extractable, database-free, plain PHP research and learning site with /docs as durable source memory and .uai as active project memory.