# 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 `/docs` folder 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:

1. Back up the domain web root.
2. Extract the ModelBreeder.com root ZIP directly into the web root.
3. Confirm `index.php`, `.htaccess`, `assets/`, `content/`, `docs/`, `src/`, `.uai/`, and `agent-file-handoff/` are top-level siblings.
4. Confirm `public/`, `wiki/`, `wp-content/`, `style.css`, and `functions.php` are absent unless a future human explicitly changes the platform.
5. 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:

```text
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/Improvement
```

Do 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:

```pseudocode
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 FUNCTION
```

## Prevention 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.css` or `functions.php` to 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`, `.uai` active memory, and `/docs` durable memory.
- Keep the footer and `/health` page version in sync with `VERSION`, `config/site.php`, and `config/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.**
