A foundational day — gf.cx home archive shipped, id.gf.cx live, og:image standard live across the portfolio

Period: Mon 18 May 2026 · Portfolios touched: dare · audrey · dogwood · gf.cx (new) · New surfaces live: pa.gf.cx · id.gf.cx · Foundational memories pinned: ~20

Generated 2026-05-18 ·

TL;DR — the wins that compound

New surface — pa.gf.cx (country-house operating system)

The flagship build of the day. Twelve commits to xlab-nyc/home-projects on the main branch, all deployed to pa.gf.cx via the gfcx-pa CF Pages project.

What's live

SurfaceWhat it carries
pa.gf.cxSystem-map landing with steward-voice framer + rich hero-thumb cards per system. 7 systems surfaced (2 populated, 5 placeholder).
pa.gf.cx/equipment/Garden & yard equipment landing — 4 records (Ardisam Tazz K32, Billy Goat F1302SPH, Honda HRX-217, John Deere Z665) with photo + recent-activity + status badge per item.
pa.gf.cx/vehicles/Cars & trucks landing — 3 stub records (Land Rover LR4 2011, BMW 2013, Ford F-250 2007). VIN / registration / insurance / mileage TBD.
Equipment master-records (×4)Identity block + photo + facts + status + next-service-due + Manufacturer Resources + service log + photo library. Calm-on-screen, utility-on-print.
Vehicle stubs (×3)Same shape as equipment, lighter — empty fact panels marked TBD until glove-box data collected.
Repair drop-off form2-page Letter PDF for the Ardisam + Billy Goat drop at the Tazz shop. Stays utility-everywhere (no calm variant — public artifact only).

Editorial voice

Steward — "keeping a country house in order across 12 months." Index organized by SYSTEM (garden, pool, well water, electrical, shed, structural) rather than artifact type. Daily-read framer card at top contextualizes "what's going on at the house right now" — late spring 2026 framing: equipment in repair, pool opening planning ahead, well filter due, shed tidy on the steward's mind.

So what: pa.gf.cx is the proving ground for an operating-system shape that lifts directly to dogwood (boarded-dog records by system) and audrey (product inventory by category). The personal version is built; the commercial lifts inherit it.

New surface — id.gf.cx (public identification)

Holding page live at id.gf.cx via the gfcx-id CF Pages project. Public-facing — no CF Access gate. Calming aesthetic borrowed from pa.gf.cx but distinct purpose: identification stubs for items registered in the gf.cx archive (theft recovery, found-item return).

The page reveals zero personal information — no addresses (Sugan PO Box is the public-facing return-mail destination, never Greenhill), no item details until per-item stubs are built, no family info. Contact via found@gf.cx (live + operational).

So what: The public surface is now claimed and styled. Per-item stubs come when the QR dual-mode build is greenlit (sketched + parked today). Same surface pattern lifts to id.audreyinc.com + id.dogwood.house later this week per Dan's flag.

Portfolio shipping — og:image standard

The og:image pipeline parked-and-sketched in last week's session went from "design ready" to "live on 4 surfaces" today. Single helper ~/bin/dare_og_capture.py (~120 LOC): headless Chrome captures the target URL at 1200×630, uploads to R2 under og/<slug>.png, returns the public URL. Each renderer emits exactly one <meta property="og:image"> tag pointing at the stable R2 URL.

Surfaceog:imageRefresh path
dash.dare.co.ukimages.dare.co.uk/og/dash-dare-co-uk.pngAuto — baked into dare_dashboard_refresh.sh cron
health.dare.co.uk…/og/health-dare-co-uk.pngManual via og refresh: hint in renderer stdout
health.audreyinc.com…/og/health-audreyinc-com.pngManual via renderer hint
health.dogwood.house…/og/health-dogwood-house.pngManual via renderer hint
reports.dare.co.ukParked v1.1 (needs different injection point — markdown→HTML build pipeline)

Auth handled by the CF Access Bypass-by-IP policies already on each gated surface — local headless Chrome reaches the origins without any header injection. End-to-end verified: all four surfaces' meta tags resolve to live R2 images (HTTP 200, 95–114 KB each).

Foundational memories pinned (architectural canon)

Today shifted from "build features" to "build the architectural substrate that all future features inherit." The pinned memories below are not passive documentation — per the user_memories_as_natural_checksums rule pinned today, they're active validation gates that future work runs against pre-flight.

User principles (how Dan works)

MemoryOne-line
user_authoritative_structure_that_scalesDan loves canonical structure — but only when it scales across the foundation. One-offs need explicit justification.
user_foundational_decisions_are_coauthoredSurface execution is delegated; foundational decisions (architecture, naming, data-shape) are co-authored. Slow down; sketch options; surface the WHY.
user_sketch_early_find_edges_scaleSketch shape early → walk failure modes/edges → articulate the scale story to instance #2-50 before committing to build. Extended today with the upstream "Dan actively scouts CF patterns" note.
user_fiction_surfaces_vs_operating_systemsDan's framing for SaaS personal-records tools (Notion, Airtable). Vendor product surfaces with captive data ≠ foundational operating systems. Build the latter, not the former.
user_audrey_commercial_roi_filterEvery new pattern is screened against "would this generate ROI in the audrey commercial model?" Personal projects (gf.cx) earn their keep as proving grounds for commercial-lifting patterns.
user_memories_as_natural_checksumsPinned memories function as live validation gates. Pre-flight checksum walk before significant commits / deploys / handoffs against the relevant pinned rules. Failures = SIGNAL, don't override silently.

Architectural rules (the canonical SHAPE of the work)

MemoryOne-line
feedback_audience_projected_viewsONE canonical record per thing → N audience-projected views, each scoped to its disclosure-appropriate audience. Generalizes drop-off-vs-master, QR theft-recovery, business cards, activity feed, etc.
feedback_blue_collar_for_public_artifactsPublic-handoff artifacts (repair forms, contractor handouts) stay utility/work-order register. Private archive surfaces can use the calming audrey-style palette. Audience-split via @media print. Real $-protection (fancy = high quote).
feedback_zero_trust_personal_recordsCybercrime is real; personal records are high-value attacker targets. Assume breach, minimize disclosure per audience, no SaaS lock-in for sensitive data, no public-to-private links, addresses are radioactive. Monthly review cadence.
feedback_gfcx_data_durability_firstSource of truth is local files in git; hosting is derived/swappable; plain HTML no proprietary format; git remote as second-copy durability. No SaaS lock-in for personal records ever.
feedback_ogimage_conditional_by_audiencePUBLIC surfaces emit rich og:image; PRIVATE surfaces explicitly OMIT — messaging-app caches (iMessage/WhatsApp/Slack) cache pasted-link previews permanently. The right defense: never render on private surfaces.
feedback_seo_image_naming_conventionExisting portfolio rule, extended today with the gf.cx home-archive instance + the "narrate the convention until reflex" nudge. img_0250.jpgardisam-tazz-k32-brand-sticker.jpg pattern.
feedback_report_title_specificity_bugRecurring bug — reports.dare.co.uk catalog rows showing generic type names ("Parked Sketch" ×5) instead of specific titles. Diagnostic recipe + regression tripwire spec pinned. This very report carries a deliberately specific title as the discipline.

Project pins (current state of work)

MemoryOne-line
project_gfcx_home_project_archiveThe gf.cx three-property archive structure (uk / bk / pa), short-code parity local + subdomain, repair-dropoffs + equipment + vehicles taxonomy.
project_pa_country_house_voiceSteward voice for pa.gf.cx — country-house keeper register, system-based index, 12-month seasonal awareness, daily-read framer at top.
project_qr_dual_mode_sketchUniversal QR pattern (gf.cx home + audrey 100s of items + dogwood + dare clients). Sketch parked; 3 foundational decisions open.
project_unified_commit_activity_visionSingle dashboard across businesses/houses/kids/personal under xlab-nyc. Queued; CF Worker + gh API + KV; calming register (private).
project_audrey_voice_signals_2026-05-18Real-Audrey reactions captured (e.g. "the backend" framing) toward the eventual seven-row voice canon. Working hypothesis stored, accumulating signals.
reference_sellars_addressesSugan PO Box (public-facing) vs Greenhill residence (private, never on public surfaces). When in doubt: Sugan.
reference_found_at_gfcxCanonical email for id.gf.cx + future identification stubs. Lifts to id.audreyinc.com + id.dogwood.house.

Bugs caught + fixed

BugResolution
pa.gf.cx equipment landing — thumbnails showing grey/tan filler beneath the photo (50% fill, 50% empty)CSS: .item__photo column was stretching to match card text-content height while the IMG inside was locked to 4:3 aspect. Fix: align-self: start on the column + removed the background-color filler.
Z665 master-record showing wrong photo (Billy Goat second angle with green object in background that I had misidentified as the JD)Apologies for the conflation. Removed the misidentified file; Dan provided IMG_0040.JPG (actual Z665 hero); renamed per SEO + embedded. Lesson worth keeping: when identifying equipment in a photo, only commit to identifying the FOREGROUND subject; background objects need their own positive confirmation.
Phone-camera photos rotating sideways in some contexts (EXIF orientation 6, browsers respect but messaging-app previews + some thumbnailers don't)PIL ImageOps.exif_transpose() applied to all 11 source photos (idempotent — 9 needed rotation, 2 already normal). Saved without the orientation tag so photos render correctly everywhere.
4,223 .html.bak-* files accumulated in dare repo (98 MB) over weeks of migration workMoved to recoverable Trash folder (~/.Trash/dare-html-backups-20260518-185643/) preserving path structure. Per-file recovery is a single mv if needed.

Parked sketches (decision-ready, not built)

Strategic shifts named today

What's awaiting Dan

Commit roll (xlab-nyc/home-projects, all on main)

SHASubject
d4cf187Init gf.cx home-projects archive — pa as first live surface
e9e8539pa equipment: enrich both master-records with data-plate facts + photo library
3db0152pa: adopt audrey-style calming palette + steward voice + system-based index
afb3bc6id.gf.cx holding page + pa restructure: category landings + vehicles
5ee6c28pa equipment photos: rename img_*.jpg → descriptive SEO slugs
164cd83pa equipment: add Honda HRX-217 + John Deere Z665 mowers (stubs)
ae7817fpa Z665: swap to correct hero photo — apologies for the conflation
591c674pa HRX-217: embed hero photo (renamed IMG_0041.JPG)
0e89b31pa equipment landing: fix grey filler under thumbs
8c604capa equipment: retrofit Ardisam + Billy Goat with manufacturer resources
7e1197epa landing: adopt rich hero-thumb cards (Option A from foundational sketch)
0f363c8pa equipment photos: apply EXIF orientation + strip tag

Plus a separate commit to xlab-nyc/dare-co-uk for the Cedars of Lebanon body images, and 5 deploys of the og:image standard across the dare portfolio surfaces.

Closing — the day's compounding signature

Today wasn't "ship a feature." Today was "establish the substrate." A new portfolio family (gf.cx) was scaffolded. Two new public-facing surfaces (id.gf.cx, pa.gf.cx) went from nothing to live. The og:image pattern, parked-but-designed for weeks, became operational across 4 portfolio surfaces. And maybe most consequentially, ~20 architectural memories were pinned — each one a checksum that future sessions will run against pre-flight.

The audrey-ROI filter Dan stated at the end of the day reframes everything: the gf.cx work is not personal indulgence — it's the cheap rehearsal where commercial patterns get refined. Every architectural rule pinned today (audience-projected views, blue-collar register, zero-trust, data-durability, og:image conditional, etc.) is upstream of revenue work on audrey + dogwood + dare clients.

The compounding is real. Tomorrow's session opens with a substrate that didn't exist yesterday morning.

dare.co.uk session report · 2026-05-18 · generated by Claude with Dan ~20 memories pinned · 12 commits to home-projects · 2 surfaces live · 5 portfolio og:images shipped