diff --git a/memory-systems/agent-os/02_agents/leonard/lessons.md b/memory-systems/agent-os/02_agents/leonard/lessons.md index a0fd574..1af34a3 100644 --- a/memory-systems/agent-os/02_agents/leonard/lessons.md +++ b/memory-systems/agent-os/02_agents/leonard/lessons.md @@ -5,6 +5,13 @@ | Date | Lesson | Context | |------|--------|---------| +| 2026-09-17 | MiniCPM5-2B (FreeToken 127.0.0.1:1919) returns EMPTY/thinking-only completions under Hermes agent turns (44× `Empty response (no content or reasoning)` in errors.log, Sep 12–17), yet answers cleanly to direct curl (small/20K/22K prompts, tools, SSE, 4-way concurrency, multi-turn). Failure is model-vs-agent-load, not server/KV. Same box also logged `prompt is too long: 17105 > 8585 max (prompt + generation)` (Sep 15, Gemma) proving FreeToken real KV budget << advertised 131K. Fix: route agent turns to routeapi/deepseek-v4-flash-0731; keep 2B models for light direct use only. | Profile audit + MiniCPM5 diagnosis (2026-09-17) | +| 2026-09-17 | `providers.freetoken.max_tokens: 2000` is silently IGNORED (`unknown config keys ignored: max_tokens`) — key placement invalid for this schema, so the generation cap never applies. Also `model_aliases.minicpm5` had a duplicate `model:` key (Gemma dict + MiniCPM scalar) so the alias didn't point where labeled. | Profile audit (2026-09-17) | +| 2026-09-17 | `hermes cron create` grammar: the prompt positional MUST come immediately after the schedule and BEFORE any `--flags` (`hermes cron create "" --name ...`). Prompt after flags → `unrecognized arguments`. `--model`/`--provider` pin per-job to a working provider — restored jobs referencing `openrouter:deepseek` (dead provider) would silently fail. | Cron rebuild (2026-09-17) | +| 2026-09-17 | ROUTE_API_KEY is injected into the gateway env, NOT in `~/.hermes/profiles/leonard/.env` (grep `.env` comes up empty). The live session resolves routeapi fine. When auditing providers, check auth.json + gateway env, not just .env. | Profile audit (2026-09-17) | +| 2026-09-17 | git-bash grep does NOT support `\d` in ERE (`grep -E "^\d+"` silently matches nothing) — use `[0-9]`. Tailscale status on Windows prints peer rows as `IP name tag state`; capture `$1 $2 $3 $5` so the cron watch script sees online/offline transitions. | tailnet-watch.sh debug (2026-09-17) | +| 2026-09-17 | Tailscale health: this box (100.64.0.1) itself reports `offline` and health check warns it can't reach the coordination server — HTTPS front door `headscale.vps1.afterthedemo.com` is intercepted by a NETGEAR router login cert (CN=www.routerlogin.net). Matches known rule: control plane is HTTP-only at http://74.208.111.99:8443, never HTTPS. Watchdog will flag when state flips. | Profile audit, tailnet check (2026-09-17) | +| 2026-09-17 | Profile hygiene issue: leonard `cron/jobs.json` had been wiped to `{"jobs":[]}` (Sep 3) while `skills/.curator_backups/2026-08-27T18-02-27Z/cron-jobs.json` still held the 5 real jobs. Restore pattern: backup → parse JSON → re-create via `hermes cron create` with corrected provider pins + profile-scripts (curator-run.sh, havoc-nightly.sh, tailnet-watch.sh). Always verify pins in jobs.json after create. | Cron rebuild (2026-09-17) | | 2026-09-01 | VPS SSH (74.208.111.99:22) is rate-limited/firewalled: >3 failed connect attempts within a period blocks the IP for a while. Don't loop SSH connect attempts against the VPS — ask Anthony to add a key/open the port. Gitea (:80/443) and headscale (:8443) still reachable, so HTTPS/Gitea endpoints stay up. | Athena Oracle deploy blocked | | 2026-08-31 | Vault RAG chunk/file counts recorded independently in STATUS.md, HOME.md, and 01_user/current-context.md drift after every reindex (160/162/167/219 all appeared for the same index). Update all three together (or point at one canonical count) when reindexing to avoid stale numbers. | AgentOS merge reindex | | 2026-08-30 | LFM2.5-2.6B is both agentic AND a pure reasoning model. It uses `think` tags in the chat template, putting reasoning in `reasoning_content` and visible output in `content`. Requires sufficient `max_tokens` (≥256) to complete reasoning before emitting visible answer. | LFM2.5 setup and testing | diff --git a/memory-systems/agent-os/04_projects/phoenix-salon/audits/2026-09-17/00_EXECUTIVE_REPORT.md b/memory-systems/agent-os/04_projects/phoenix-salon/audits/2026-09-17/00_EXECUTIVE_REPORT.md new file mode 100644 index 0000000..adae07a --- /dev/null +++ b/memory-systems/agent-os/04_projects/phoenix-salon/audits/2026-09-17/00_EXECUTIVE_REPORT.md @@ -0,0 +1,77 @@ +# Phoenix Salon + Spa — Digital Presence Audit +## EXECUTIVE REPORT +**Date:** 2026-09-17 · **Target:** https://phoenixcameronpark.com/ (canonical www→apex 302 verified) +**Audit ID:** PSS-2026-09-17 · **Method:** Live crawl + rendered DOM + Google Maps public view + directory discovery (all evidence captured this session) +**Prior record:** VeriPath audit 2026-08-13; overview verified 2026-09-11/09-14; hallmark design audit 2026-07-16 (identity reconciled — same business, no conflict) + +--- + +## Layer 1 — Executive Dashboard + +**Overall Score: 70 / 100** (Good — competitive, with high-impact accuracy gaps) + +| Severity | Count | +|----------|-------| +| 🟥 Immediate | 2 | +| 🟧 High | 4 | +| 🟨 Medium | 3 | +| 🟩 Enhancement | 2 | + +| Category | Sub-Score (/10) | +|----------|:---:| +| Digital Identity | 8 | +| Technical SEO | 7 | +| Conversion | 7 | +| Google Business | 7 | +| Reviews | 6 | +| Content | 7 | +| Authority | 6 | + +**Severity grid** +| | Identity | Tech | Conversion | GBP | Reviews | Content | Authority | +|---|---|---|---|---|---|---|---| +| 🟥 | | F1 | F1 | | | | F2 | +| 🟧 | F3 | F6 | | F5 | F4 | | | +| 🟨 | F7 | F8 | F9 | | | | | +| 🟩 | | | F10 | F11 | | | | + +--- + +## Layer 2 — Business Impact + +**What's at stake.** Phoenix Salon + Spa has the raw material every local business wants: a 4.9★/64 Google rating, 4.9★/65 Yelp, active socials, and a real booking engine (Vagaro). The gaps are not quality problems — they are **accuracy and consistency problems** that bleed revenue quietly: + +1. **Wrong hours, twice.** The website and its structured data both tell Google you open at 10:00 AM and close at 6:00 PM Saturday. The owner's stated truth (verified this month) is 9:00 AM open and 3:00 PM Saturday close. A client who shows up at 4 PM Saturday finds a locked door; a Thursday-morning regular who arrives at 9:30 finds no open sign. Every "wrong hours" query trains Google's local ranking against you, and "permanently closed" impressions from a dead-ghost old-brand domain (F2) erode trust in parallel. + +2. **Your old name is still your second business card.** La Mae Salon & Spa is live on at least two directories (Fave, Alignable) and its old domain is a dead Cloudflare 526 (F2). Anyone who remembers the old name finds a corpse, not a redirect to Phoenix. Local ranking treats this as NAP fragmentation. + +3. **Your social proof is aging.** The newest visible Google review is ~5 months old (Apr 2026). At 64 reviews you have volume; you're losing velocity — the single strongest "pick me" signal for local search in this category. + +**The good news.** Canonical is fixed (was pointing at a dead domain in July), JSON-LD schema is valid and complete, NAP (name/address/phone) matches across site + Google + Yelp, booking is live, and you out-score every local competitor on rating. These are polish-and-consistency fixes, not rebuilds. + +--- + +## Layer 3 — Recommendations + +| # | Problem | Impact | Fix | Effort | +|---|---------|--------|-----|--------| +| F1 | Site + schema hours wrong vs owner truth (10–6 vs 9–6; Sat 18:00 vs 15:00) | 🟥 Immediate — lost walk-ins; confuses Google local ranking | Update visible hours AND JSON-LD to **Mon–Fri 9–6, Sat 9–3, Sun closed** (copy in roadmap) | S | +| F2 | Old-brand domain lamaesalonspa.com dead 526; phoenixsalonspa.com now dead | 🟥 Immediate — dead link equity, old-brand trust leak | 301 lamaesalonspa.com → phoenixcameronpark.com at origin, or take down cleanly | S-M (needs hosting access) | +| F3 | La Mae residue live: fave.salon + Alignable listings | 🟧 High — NAP/brand fragmentation | Claim + update or delete both listings; standardize "formerly La Mae" wording | M | +| F4 | Google review velocity thin (newest ~Apr 2026, ≈5 mo) | 🟧 High — weak social-proof momentum | Restart review-request flow (3–5/mo via Vagaro follow-up) | M | +| F5 | GBP hours display "Closes 6 PM" — verify Saturday matches owner truth | 🟧 High — same wrong-hours issue on the most-visible surface | Confirm GBP hours = Mon–Fri 9–6, Sat 9–3, Sun closed; check Thursday capture | S | +| F6 | Sitemap lastmod stale (2026-07-19) — no freshness signal | 🟧 High — weak crawl priority for evolving content | Regenerate sitemap on deploy; ensure live lastmod | S | +| F7 | Homepage H1 "Hey bestie, welcome in" vs "Luxury Salon & Spa" positioning | 🟨 Medium — brand-voice collision (design audit 07-16; still live) | Align H1 + hero copy with luxury+personal tone | M | +| F8 | TikTok (@byashleythornhill) missing from JSON-LD sameAs | 🟨 Medium — incomplete entity graph | Add TikTok to sameAs | S | +| F9 | Booking is link-out only; no inline Vagaro widget on homepage | 🟨 Medium — extra click in a 3-click booking competitor landscape | Embed widget or "book with Ashley" card above fold | M | +| F10 | Directory hours chaos: wheree.com shows Mon 9AM–7PM + Sunday entries | 🟩 Enhancement — third conflicting hours set | Fix after F1/F5; aggregators lag source fixes | L | +| F11 | IG bio claim "800+ 5-star ratings" vs 64 Google / 65 Yelp public | 🟩 Enhancement — overclaim risk if audited | Keep as "reviews across Vagaro, Yelp, Google" or add Vagaro count | S | + +--- + +## Layer 4 — Evidence refs + +All findings map to the Technical Appendix (F1–F11). Evidence captured live 2026-09-17: raw headers, HTML/JSON-LD, rendered DOM text, Google Maps public view, and directory search snippets — source per finding in the appendix. + +--- +*Draft for internal review. Not for client delivery without final QA sign-off.* \ No newline at end of file diff --git a/memory-systems/agent-os/04_projects/phoenix-salon/audits/2026-09-17/00_FIXPACK_phoenixcameronpark.md b/memory-systems/agent-os/04_projects/phoenix-salon/audits/2026-09-17/00_FIXPACK_phoenixcameronpark.md new file mode 100644 index 0000000..f38a7ae --- /dev/null +++ b/memory-systems/agent-os/04_projects/phoenix-salon/audits/2026-09-17/00_FIXPACK_phoenixcameronpark.md @@ -0,0 +1,108 @@ +# 00_FIXPACK — Phoenix Salon + Spa (phoenixcameronpark.com) +**Audit ID:** PSS-2026-09-17 · **Applies to:** Lovable/gpt-engineer site editor (paste-ready) · **Status:** code prepared, validated, NOT yet deployed + +> Deployable items only. Human-dashboard steps → `01_RUNBOOK`. Board → `02_KANBAN/`. +> **Re-verify before paste:** the site may change between audit and deploy — re-open `/contact` and the homepage JSON-LD before pasting. + +--- + +## 1. Validated JSON-LD (replace the homepage block) + +`