Memory Wiki

Untitled Session

2026-05-24 09:05 UTC · 31 messages · cli

You2026-05-24 09:10 UTC
Write build plans for T43-T51 (Modules 8-10). 9 plans total.
Donna2026-05-24 09:10 UTC
Tool2026-05-24 09:10 UTC
{"content": " 1|# Past Faults Log — Profe Core Modules\n 2|\n 3|> **Purpose:** Every bug, design miss, and edge case discovered during development is recorded here.\n 4|> Future modules (and future TBs) MUST read this log before writing code.\n 5|\n 6|---\n 7|\n 8|## ...
Tool2026-05-24 09:10 UTC
{"content": " 1|# Build Plan V3: Profe Core — Modules 2-10 (COMPLETE)\n 2|\n 3|**Document ID:** BUILD-PLAN-SA-003-V3-COMPLETE \n 4|**Author:** SA (Super Architect) \n 5|**Date:** 2026-05-24 \n 6|**Status:** AUTHORITATIVE \n 7|**Phase 1 Status:** ✅ COMPLETE & LOCKED (P...
Donna2026-05-24 09:10 UTC
Tool2026-05-24 09:10 UTC
{"content": " 501|- ⚠️ **Idempotency guards** — `profe_webhook_events.event_id` UNIQUE KEY. `isDuplicate()` check before processing.\n 502|- ⚠️ **Webhook exempt route** — Register `'stripe-webhook'` via `CsrfMiddlewareInterface::addExemptRoute()`.\n 503|- ⚠️ **Rate limiter** — Redis-backed tok...
Donna2026-05-24 09:10 UTC
Tool2026-05-24 09:10 UTC
{"content": " 1001| - Module management interface\n 1002| - User management\n 1003| - System configuration\n 1004|\n 1005|**Critical Design Decisions:**\n 1006|- ⚠️ **Trigger loop prevention** — Automator tracks execution depth. Halts at depth > 3.\n 1007|- ⚠️ **admin_app architecture** — ...
Donna2026-05-24 09:10 UTC
Now let me check existing build plans for format reference.
Tool2026-05-24 09:10 UTC
{"total_count": 25, "files": ["/root/.hermes/plans/task-t35-build-plan.md", "/root/.hermes/plans/task-t34-build-plan.md", "/root/.hermes/plans/task-t33-build-plan.md", "/root/.hermes/plans/task-t32-build-plan.md", "/root/.hermes/plans/task-t31-build-plan.md", "/root/.hermes/plans/task-t30-build-plan...
Donna2026-05-24 09:10 UTC
Tool2026-05-24 09:10 UTC
{"content": " 1|# Build Plan — T35: MediaAdmin (Module 6 — Media Pipeline)\n 2|\n 3|## 1. Overview\n 4|\n 5|**Module Name:** `media_admin`\n 6|**Namespace:** `Profe\\\\MediaAdmin`\n 7|**Responsibility:** Media library administration API — central admin surface for the ent...
Tool2026-05-24 09:10 UTC
{"content": " 1|# Build Plan — T29: CrmAdmin (Module 5 — CRM)\n 2|\n 3|## 1. Overview\n 4|\n 5|**Module Name:** `crm_admin`\n 6|**Namespace:** `Profe\\\\CrmAdmin`\n 7|**Responsibility:** CRM administration API — contact management UI endpoints, tag management, sync dashbo...
Donna2026-05-24 09:10 UTC
Let me check a plan with new tables (T11 or T12) for the migration pattern.
Tool2026-05-24 09:10 UTC
{"content": " 1|# Build Plan: T11 — mem_levels (Membership Tier Definitions)\n 2|\n 3|**Module:** Module 2 — Membership\n 4|**Build Order:** 1 of 4 (Module 2)\n 5|**Subsequent Tasks:** T12 (mem_data), T13 (access_control), T14 (member_admin)\n 6|**Status:** PLANNED\n 7|**...
Tool2026-05-24 09:10 UTC
{"content": " 1|# Build Plan: T12 — mem_data (Membership Data / Subscription Tracking)\n 2|\n 3|**Module:** Module 2 — Membership\n 4|**Build Order:** 2 of 4 (Module 2)\n 5|**Depends On:** T11 (mem_levels) — reads tier definitions\n 6|**Subsequent Tasks:** T13 (access_control...
Donna2026-05-24 09:10 UTC
Now I have all the context. Let me write all 9 build plans.
Tool2026-05-24 09:10 UTC
{"bytes_written": 17748, "dirs_created": true, "lint": {"status": "skipped", "message": "No linter for .md files"}}
Tool2026-05-24 09:10 UTC
{"bytes_written": 13234, "dirs_created": true, "lint": {"status": "skipped", "message": "No linter for .md files"}}
Tool2026-05-24 09:10 UTC
{"bytes_written": 11362, "dirs_created": true, "lint": {"status": "skipped", "message": "No linter for .md files"}}
Donna2026-05-24 09:10 UTC
Tool2026-05-24 09:10 UTC
{"bytes_written": 12609, "dirs_created": true, "lint": {"status": "skipped", "message": "No linter for .md files"}}
Tool2026-05-24 09:10 UTC
{"bytes_written": 11441, "dirs_created": true, "lint": {"status": "skipped", "message": "No linter for .md files"}}
Tool2026-05-24 09:10 UTC
{"bytes_written": 15974, "dirs_created": true, "lint": {"status": "skipped", "message": "No linter for .md files"}}
Donna2026-05-24 09:10 UTC
Tool2026-05-24 09:10 UTC
{"bytes_written": 11098, "dirs_created": true, "lint": {"status": "skipped", "message": "No linter for .md files"}}
Tool2026-05-24 09:10 UTC
{"bytes_written": 18094, "dirs_created": true, "lint": {"status": "skipped", "message": "No linter for .md files"}}
Tool2026-05-24 09:10 UTC
{"bytes_written": 14253, "dirs_created": true, "lint": {"status": "skipped", "message": "No linter for .md files"}}
Donna2026-05-24 09:10 UTC
Let me verify all 9 files were created correctly.
Tool2026-05-24 09:10 UTC
{"output": "-rw-r--r-- 1 root root 17748 May 24 09:07 /root/.hermes/plans/task-t43-build-plan.md\n-rw-r--r-- 1 root root 13234 May 24 09:07 /root/.hermes/plans/task-t44-build-plan.md\n-rw-r--r-- 1 root root 11362 May 24 09:07 /root/.hermes/plans/task-t45-build-plan.md\n-rw-r--r-- 1 root root 12609 M...
Donna2026-05-24 09:10 UTC
## Summary **What I did:** Wrote all 9 build plans for T43-T51 (Modules 8-10) — Forms, SEO, and Automation & Polish. **Files created (9 total, 2,888 lines):** | File | Task | Module | Lines | New Tables | |---|---|---|---|---| | `/root/.hermes/plans/task-t43-build-plan.md` | T43 | FormEngine | 379 | `profe_form_schemas`, `profe_form_conditional_rules` | | `/root/.hermes/plans/task-t44-build-plan.md` | T44 | FormEntries | 297 | `profe_form_entries` | | `/root/.hermes/plans/task-t45-build-plan.md` | T45 | FormAdmin | 279 | None | | `/root/.hermes/plans/task-t46-build-plan.md` | T46 | SchemaRenderer | 290 | None (transient storage) | | `/root/.hermes/plans/task-t47-build-plan.md` | T47 | SitemapGenerator | 279 | None (in-memory) | | `/root/.hermes/plans/task-t48-build-plan.md` | T48 | RedirectManager | 371 | `profe_redirects`, `profe_404_log` | | `/root/.hermes/plans/task-t49-build-plan.md` | T49 | SeoAdmin | 267 | None | | `/root/.hermes/plans/task-t50-build-plan.md` | T50 | Automator | 408 | `profe_automator_rules`, `profe_automator_logs` | | `/root/.hermes/plans/task-t51-build-plan.md` | T51 | AdminApp | 318 | None | **Fault rules enforced across all plans:** - **FAULT-004** — All mutation endpoints specify `checkAdminAccessWithCsrf()` calling `requireValidNonce()` - **FAULT-005/009** — All plans specify ≥12 tests (13-14 tests each) - **FAULT-006** — All modules with new tables have PHP migration classes (T43, T44, T48, T50). Modules without new tables explicitly state "No migration needed" - **FAULT-008** — All declared dependencies are documented as constructor-injected; test plans include `testConstructStoresAllDependencies()` for each - **FAULT-002/007** — All direct `profe_users` queries documented with explicit code samples in a dedicated "FAULT-002 Workaround" section - **FAULT-01** — Factory closure pattern for `register()` methods - **FAULT-04** — Bare table names, no `$wpdb->prefix` - **FAULT-05** — Prepared statements for all queries - **FAULT-09** — No stubs, all methods fully implemented **Key design decisions:** - T46/T47: No new tables per task spec — schema stored in transients (WordPress cache), sitemap URLs built on-the-fly from content - T50: Execution depth limit at 3 to prevent trigger loops (PB critical design decision) - T51: Assumes React SPA architecture with PHP API backend (FS-1 resolution) - All admin-only modules (T45, T49, T51) follow the orchestration pattern — no own tables, delegate to child module interfaces