Decisions

2026-08-04 — pipeline re-run (v2)

Context: the 2026-05 build predates most of the current suite (copy deck, draft-first mode, legal pages,

multilingual, SEO/GEO, dossier surface). Operator asked to re-run the pipeline on the same business.

Rating (4.9/150), hours, phone and address are unchanged since May — no fact drift. The *review sample*

rotated completely; both samples are now kept in content/reviews.md.

five current Google reviews are German; the previous site was English-only, which was wrong for local search.

DE is canonical for local SEO and lives at the root; EN is prefixed /en/. Same slugs across locales.

Gets tokens→CSS-vars generation, hreflang plumbing, schema helpers with the policy bans, draft ribbon +

/dossier-*/ transparency surface, sitemap, robots/llms.

serif, squared-off UI) passed distinctiveness and there was no cue to redesign. The rebuild is a

structure/language change, not a restyle. Fonts stay system stacks — no webfont request, so no

Google-Fonts transfer to disclose in the privacy policy.

walk-in policy, legal entity), draft ribbon, noindex. Nothing invented to fill a gap.

untouched, per the suite's never-overwrite-a-live-preview rule.

Copy-deck parsing convention

The deck's section delimiter is ## <lowercase-slug>; a ## line that is prose (capitals, spaces) is

a *visible heading inside* the section, not a delimiter. This lets legal pages keep normal ##

subheadings inside a single ## body section. [TBD: …] lines are parsed as a separate structural

kind so they render in their own marked block and can never be mistaken for copy

(site/src/lib/copy.mjs).

Imagery — the Places photo set is not trustworthy as a whole

Pulling all 10 profile photos and reviewing them individually turned up that photos 7–10 are

user-uploaded and two of them show a different salon ("Coiffeur Rudi", different phone and hours).

Photos 6, 9 and 10 show identifiable people without consent. Only owner-uploaded photos 1–5 are used,

and places-05 (the salon interior) became the hero. Full detail and the reporting action are in

content/cautions.md and TODO.md T20. The v1 site's gallery alt text was wrong on every image

because it trusted the filenames; files are now named for what they contain.

Images moved to src/assets/ and go through astro:assets: 4.0 MB of JPEG originals now ship as

WebP, largest 253 kB, whole site 1.2 MB.

Distinctiveness review — 2026-08-04

is a CSS custom property generated from brand/design-tokens.json.

used left-text-photo-right — and that is what this build had. Replaced with a text block over a

full-bleed photo strip: different composition, closer to the category spec's "bold hero", and it

keeps text off the photo so the styleguide's contrast rule holds. Registered as

text-block-fullbleed-strip.

Both are near-blacks; that is where the resemblance ends — this one is a warm ink with a brass

accent (#B98A56), the other a cool green-black. Different city, category and typography. Changing

a colour derived from this salon's own materials to avoid coincidental proximity to an unrelated

client's site would be the wrong trade.

are visible [TBD:] placeholders, not invented values. No aggregateRating/Review markup.

the gate is designed to block from production. Everything else passes.

2026-05-28

Distinctiveness review — 2026-05-28

Claude implementation pass — 2026-05-28

Website-builder pass — 2026-05-28

Distinctiveness review — 2026-05-28 (website-builder pass)

Local preview fix — 2026-05-28