From 870cbe117eb6abf37ecc74b8ccf56abfc6ac62dd Mon Sep 17 00:00:00 2001 From: Ty Date: Sun, 27 Sep 2026 18:37:29 +0000 Subject: [PATCH] CoS: open JOB-20260927-thornhill-closeout (Anthony gave job to Regis 11:31 PT) --- .../jobs/JOB-20260927-thornhill-closeout.md | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 memory-systems/agent-os/04_projects/thornhill-website/jobs/JOB-20260927-thornhill-closeout.md diff --git a/memory-systems/agent-os/04_projects/thornhill-website/jobs/JOB-20260927-thornhill-closeout.md b/memory-systems/agent-os/04_projects/thornhill-website/jobs/JOB-20260927-thornhill-closeout.md new file mode 100644 index 0000000..d09fca5 --- /dev/null +++ b/memory-systems/agent-os/04_projects/thornhill-website/jobs/JOB-20260927-thornhill-closeout.md @@ -0,0 +1,51 @@ +--- +id: JOB-20260927-thornhill-closeout +project: thornhill-website +surface: thornhillconstruction.net homepage + GBP/listings +state: open +owner: Regis (drafts/verifies); Anthony (Gatekeeper) +gate: Anthony approves anything published/sent; Larry approves copy +live_url: https://www.thornhillconstruction.net/ +live_read_at: 2026-09-27T11:33:44-07:00 +current_hash: sha256:bc227830a9c81432789056fd9c0d82f3bb8262f4543bc78f3fed500b9a661d8c +proposed_hash: null +evidence: + - "CoS live read 2026-09-27 11:33:44 PT (curl, read-only, from Anthony's desktop DESKTOP-AEI8KMV; cloud-box HTTPS gets a TLS reset from the Hostinger/LiteSpeed host, plain HTTP answers). Hash = sha256 of homepage HTML after redirects (83,600 bytes); re-read 11:36:44 PT gave the same hash. Raw HTML not committed." + - "Redirects: all four variants end 200 on https://thornhillconstruction.net/ (bare host is canonical; rel=canonical = bare). https://www -> 301 -> bare (1 hop); http://bare -> 301 -> https bare (1 hop); http://www -> 301 https://www -> 301 bare (2 hops); https://bare 200 (0 hops). Not broken. FLAG: live_url (www) is not the canonical host; GBP/listings should point at whichever host Anthony picks." + - "Homepage head: title 'Thornhill Construction' (brand only, no service/place words); meta description present ('...dependable deck construction and repair, backed by attentive service, satisfied customer reviews, and direct contact with owner Larry.'). FLAG: zero og: tags on any page (home, /work/, /about/, /contact/). /work/, /about/, /contact/ have no meta description. Generator WordPress 7.1.2." + - "Schema: 1 JSON-LD block on every page, @type GeneralContractor (a LocalBusiness subtype): name, url (bare), telephone +1-530-306-4629, email larry@thornhillconstruction.net, PostalAddress Placerville CA 95667 US (no street), areaServed 'El Dorado County', identifier 'CSLB #336956'. No openingHours, no image/logo, no sameAs." + - "robots.txt 200 (via bare host): Disallow /wp-admin/, Allow admin-ajax, Sitemap https://thornhillconstruction.net/wp-sitemap.xml, plus a stray 'Allow: /llms.txt' after the Sitemap line. /sitemap.xml -> 301 -> /wp-sitemap.xml 200 (index -> wp-sitemap-posts-page-1.xml: /, /work/, /about/, /contact/). /sitemap_index.xml 404 (fine)." + - "Lead path on site: phone 530-306-4629 (3 tel:+15303064629 links on home), mailto:larry@thornhillconstruction.net (1 on home). FLAG: NO
on the homepage (the 12 'wpcf7' hits there are CSS only). The Contact Form 7 form lives on /contact/ (form wpcf7-f33-p132-o1, 'Request a callback': name, phone, email required; message optional). Home links to /contact/ and #contact. Form DELIVERY NOT TESTED (read-only); still unverified. FLAG: /contact/ also prints 'Landline (530) 303-3950', but the interview says the landline should not be on site/ads." + - "Trust/copy as found: hero 'Custom decks built to last in El Dorado County.' / 'Licensed 1976. One crew. No subcontractors.' / stat '57 years · CSLB #336956'. CSLB #336956 shows on every page (footer + JSON-LD). /about/: 'At 26, in 1976, I got my license', 'Licensed since 1976', 'These days I stick to decks: new work, repairs, stairs, railings.' FLAG: CSLB record says issued 1977-07-01 (status.md 2026-09-11)." + - "Services on home: New decks; Repairs; Stairs & railings. FLAG vs interview 'decks only' (Larry to confirm)." + - "Address/area: 'Placerville, CA 95667 · El Dorado County' in the footer; /contact/ 'Placerville, CA'; no street address anywhere. Hours: NONE on site or in schema (status.md says GBP shows Mon-Fri 9-5)." + - "Portfolio: homepage has 6 , all with alt text (hero, 'New deck', 'Stairs and metal railings', 'Deck before', 'Deck after', 'Larry Thornhill'). Only 1 before/after pair on home. /work/ has 3 projects (Deck, Stairs A, Stairs B), 6 before/after , all with alt text ('Deck before' ... 'Stairs B after'). So 6 photos and 3 projects are there by count; not yet checked by eye on desktop or mobile. (status.md 2026-09-10 counted 11 images on the page; home now has 6.)" + - "Copy note: homepage meta description says 'satisfied customer reviews', but status.md 2026-09-11 records GBP at zero reviews (Yelp had 2 five-star reviews per the interview). For Larry/Anthony." + - "Background (not re-verified today): GBP exists (found by searching the phone number on Maps; do not create a duplicate), primary category Deck builder, Mon-Fri 9-5, no address, zero reviews. The Yelp wrong-number claim (530-344-1504) was WRONG: Yelp shows (530) 306-4629, Tony confirmed 2026-09-11. Source: thornhill-website/status.md." +blocker: none +--- + +# JOB-20260927-thornhill-closeout + +what: Close out the Thornhill lane: prove the live site and listings are good enough to close. Regis verifies each item in group A against the live surface and reports in event files. Group B is for Larry to confirm; it does not block the close. One surface: thornhillconstruction.net homepage, plus GBP/listings that point at it. +who: Regis drafts and verifies (reads the live site; drives and stops at login; never sends, submits, or saves). Anthony is Gatekeeper: runs the real lead-path tests, logs in, and approves anything published or sent. Larry approves public copy. CoS owns state and fact-checks against status.md, the interview, and this live read. +done-when: every group A item is PASS with an evidence path, or WONT-DO by Anthony; the final desktop/mobile QA pass is saved; Tony approves the close in a gatekeeper event. CoS then writes the outcome and sets state to saved. Group B items still open at that point become WONT-DO/stand_down per the Phoenix lesson; they do not hold the close. + +## A. Close blockers (Regis/Anthony can verify) + +1. **Lead path, end to end.** Anthony (not Regis) places one call to 530-306-4629 and sends one email to larry@thornhillconstruction.net; confirm both reach Larry. Form: judge presence from the live read, not the old CF7 note. Live 11:33 PT: no form on the homepage; a CF7 form ('Request a callback') on /contact/. Anthony decides whether the homepage needs one. Anthony runs one test submission (Regis never submits) and confirms it arrives in Larry's inbox. Evidence: an event file with times and who confirmed. +2. **Search/sharing basics.** Title and meta description on each page: home has both (title is brand only); /work/, /about/, /contact/ have no meta description. OG tags: none; add og:title/description/image/url. LocalBusiness schema: GeneralContractor present; consider openingHours/image once B is settled. robots.txt and sitemap: OK. HTTPS redirects for www and bare: all land 200 on the bare host. Pick the canonical host and make sure listings use it. +3. **Portfolio.** At least 6 usable before/after photos, ideally 3 projects, all with alt text, checked on desktop and mobile. By count, /work/ meets this (3 projects, 6 images, all with alt). Still needed: a visual check of photo quality and layout on desktop and mobile, with screenshots saved. +4. **Listings consistency.** GBP is the existing profile; do not create a new one. Check phone, website (canonical host), hours, service area, and services against the site. Then Yelp, Angi, and White Pages. Do not reopen the Yelp wrong-number claim; it was later found incorrect (Yelp shows 530-306-4629). Any listing edit is Anthony's login and Anthony's Save. +5. **Final desktop/mobile QA pass saved.** Screenshots of home, /work/, /about/, /contact/ at desktop and mobile widths, plus a fresh current_hash. Evidence paths go in an event file. +6. **Tony approval to close.** A gatekeeper event quoting Anthony. + +## B. Larry-only (owner confirms; do NOT block close) + +If Larry doesn't answer, Anthony may mark these WONT-DO or stand_down (Phoenix lesson 2026-09-27). + +1. **Services scope.** The interview says 'decks only', but the site lists new decks, repairs, and stairs & railings (/about/ says 'stairs, railings'). Larry confirms. +2. **License year wording.** The site says 'Licensed 1976' (hero, /about/ 'At 26, in 1976'), but the CSLB issue date is 1977-07-01. Also check the '57 years' stat, which counts from 1969. Larry picks the wording. +3. **Service-area/address wording.** Currently 'Placerville, CA 95667 · El Dorado County', with no street address. Keep it that way unless Larry wants a street address. Also: is the landline (530) 303-3950 meant to appear on /contact/? +4. **'One crew. No subcontractors.' and hours accuracy.** The line is on the homepage hero. The site shows no hours; GBP says Mon-Fri 9-5. Larry confirms both. +5. **Larry approves the public copy.** This includes the meta description's 'satisfied customer reviews'.