Conversation
…ccess Previously fired on push to main with a fixed 30s sleep, which races GitHub Pages deployment. Now triggers on deployment_status success for the github-pages environment — purge fires only after Pages confirms the deploy is live. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…loses #54 - GA script, cookie banner HTML, and cookie consent JS removed from all six pages (index, doctrine, portfolio, now, governance, 404) - Cookie consent CSS block removed from style-v2.css (~95 lines) - GitHub icon (18px header, 20px footer) added to all pages - JSON-LD sameAs updated on all pages to include github.com/simonives - governance.html rewritten: Cloudflare Analytics explanation, no-cookies statement, infrastructure disclosure, updated jurisdiction section - governance.html meta description updated to reflect Cloudflare Analytics - llms.txt: GitHub profile section added - sitemap.xml: governance.html lastmod updated to 2026-07-15 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace em dashes with colon and full stop per CLAUDE.md hard rule. Found by code-review on PR #55. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Currently section: BHP, SAP SuccessFactors, ServiceNow, and Australian HR
Institute all linked to their respective websites
- Where he'll be: expanded to three separate entries with event page links
- 12 Aug: SAP NOW ANZ (sapnowanz.html)
- 13 Aug: Snowflake World Tour Sydney
- 1 Sep: SAP HR Connect Sydney (SuccessFactors event)
- Updated timestamp to 15 July 2026
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…E.md Adds tool-neutral (AGENTS.md) and Gemini/Antigravity (GEMINI.md) instruction files for this repo, reorganised under Scope/Precedence/Instructions/Negatives/Expiry with all named topics (accessibility, voice, architecture, SEO, dark mode, GitHub workflow, Superpowers) folded into Conventions/Commands. CLAUDE.md was rewritten to the same structure but is not included in this commit — it is gitignored by existing repo convention (.gitignore line 57, "AI collaboration files... not needed in the public repo view") and remains local-only, consistent with that convention. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Same privacy boundary as CLAUDE.md — these carry identical brand/site content and were committed before the boundary was reconsidered.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JSYCmcxgTH8whkKwjZekxB
GitHub Pages serves the apex domain directly (CNAME: simonives.com, no www). Cloudflare 301-redirects www to apex. Every canonical reference on the site (link rel=canonical, og:url, sitemap.xml, llms.txt, simonives.md, robots.txt's Sitemap line, JSON-LD url) pointed to www instead, so any tool that doesn't follow cross-host redirects, several AI fetch tools among them, got a dead end instead of content. Also adds a CI check (check-canonical-host.yml) that fails the build if www.simonives.com reappears anywhere in tracked files, so this can't quietly come back when new pages are added. Fixes #72
# Conflicts: # 404.html # doctrine.html # governance.html # index.html # now.html # portfolio.html # sitemap.xml
Replaces the Google Fonts CDN dependency. Instanced from Google's variable fonts (wght for Cormorant Garamond, wght+opsz for Inter), subset to latin, converted to woff2 via fonttools. SIL OFL 1.1, license included alongside each family.
fonts.css: @font-face for the self-hosted faces (Task 1) plus the existing Material Symbols font. tokens.css: full M3 semantic colour, typography, spacing, and shape token layer, light + html.dark, seeded from the site's own Aurum, Midnight, Parchment, and Slate palette per STYLE_GUIDE.md. components.css: component layer keyed to class names used across all six pages (Tasks 3-8). Not yet wired into any page; that's Tasks 3-8.
Review finding: 28 em dash occurrences across the three new stylesheets' comments violated the plan's no-em-dash constraint. Replaced with full stops or commas, no functional CSS changed.
Stylesheet links swapped, hero and quote-band moved onto Midnight with the Phi watermark, polyrhythm rule replaces the old <hr>, engage cards added at end of page. No copy changed except the engage-cards placeholder text (see Task 8).
fonts.css (Task 2) references fonts/material-symbols/MaterialSymbolsOutlined-Variable.woff2, but that file only ever existed on the unmerged material-design-poc branch, not on dev, so it was missing from this worktree. Brought in from that branch (same file, Apache 2.0 licensed, license included). Task 3's implementer flagged this as a concern; it doesn't affect index.html (no icons rendered there) but would break every other page's nav icons (menu, theme toggle) once they're migrated.
Sticky rail navigation removed (superseded by numbered practice cards per the M3 spec). Three practices wrapped as numbered cards with ghosted ordinals; polyrhythm diagram added to practice 03. No copy changed.
components.css styles engage-card descriptions via the bare .engage-block p selector, which a span never matches. Changed <span class="engage-body"> to <p class="engage-body"> in both files so the intended 16px/1.6/on-surface-variant styling actually applies. No text content changed.
Prose wrapped in reading rails with a dropcap opening paragraph 1, the two-teachers quote promoted to a full quote band, a phi-break marks the shift from movement two to three (immediately after "I want to be clear about one thing..." and before "When I decided to study it formally..."). Engage cards added with the Understand -> doctrine.html variant. No copy changed except the placeholder engage-body text. Two deviations from the task brief, both required by the actual spec doc (docs/superpowers/specs/2026-09-16-material-design-site-refresh.md, lines 235-249), not the brief's paraphrase of it: 1. The brief assumed 9 paragraphs across 3 even movements. The real file has 12. Per the spec's own paragraph counts and semantic description, the split is 2/3/7: movement one is the two-teachers paragraphs (dropcap opens the first), movement two is exactly the three paragraphs "not a straightforward student" through "I want to be clear about one thing," and movement three is the remaining seven paragraphs from "When I decided to study it formally" to the close. The phi-break sits at the movement two/three boundary, marking "the shift from childhood to working life" per the spec. 2. The spec calls for an 80px .quote-phi on this page versus 88px on the home page, implying a page-specific modifier (e.g. .quote-band--portfolio). No such modifier exists in components.css (Task 2). This is a CSS gap, not fixable from this file alone; the base 88px .quote-band sizing is used here for now. Tracked as a follow-up for whoever revisits Task 2/components.css.
Flat now-label paragraphs restructured into an M3 card grid; schedule entries restructured into event rows with a date chip. No copy changed, existing headings and body text preserved exactly, mapped to the closest matching card from the design spec.
…dd past-event marker and update Now schedule Task 6 review found two real defects inherited from the task brief's literal markup template colliding with the existing CSS: event rows rendered stacked instead of chip-beside-text (the wrapping <a> had no flex layout of its own), and the "Still going" card's background never actually switched to Midnight (a class-collision between .card-filled and .on-midnight of equal specificity), producing a severe contrast failure. Both fixed in components.css. Also adds a Material Design 3-consistent past-event treatment (dimmed row plus a tonal "Past" pill, matching the site's existing eyebrow/tag typography, rather than strikethrough) and refreshes the Now page's schedule per Simon's direction: three past events marked accordingly, three upcoming events added (family holidays 16-24 Sep, Montreal SAP SuccessFactors Executive Innovation Board 2-6 Nov, Gartner HR Symposium/Xpo Sydney 16-17 Nov, the latter's dates verified against Gartner's own conference page). Last-updated stamp bumped to 17 September 2026. This is content Simon supplied directly, distinct from the placeholder engage-cards copy still pending the separate content pass.
.event-row--past:hover was resetting opacity to 1 (inherited from the base .event-row:hover rule), popping past events back to full brightness on hover instead of staying visually de-emphasised.
Governance stays deliberately plain, no Midnight band, no watermark, per the spec. 404 gets the largest Phi watermark on the site, full Midnight treatment, with a phi-break transition device between the hero and the engage cards in place of the removed legacy divider. No copy changed on either page, including the existing 404 subheadline's em dash, which is a content fix for the next pass, not this one.
Grep-verified across all six HTML files that nothing references either stylesheet before deleting them, the M3 stylesheet trio (fonts.css, tokens.css, components.css) is now the site's only CSS.
tokens.css's own comment on this block said to delete it once every selector was migrated and style.css was removed (Task 9). Grep- confirmed zero remaining references to any --color-* alias or --transition-premium anywhere in the six HTML files or components.css before removing it.
Discovered during Task 10's accessibility pass: the mobile nav's menu-toggle script had no keyboard path to close the overlay other than tabbing back to the toggle button. Pre-existing on dev, not introduced by this refresh, but worth closing given the site owner's stated vision impairment and the WCAG 2.2 AA baseline this project is held to. Escape now closes the overlay and returns focus to the toggle button, identical behaviour added to all six pages since each carries its own inline copy of this script.
Fixes #74. .on-midnight a (element+class, specificity 0,1,1) was beating .btn-filled's own color rule (single class, 0,1,0) at rest, painting the "Read all of Phronesis" button's text the same Aurum as its own background, a zero-contrast label invisible until :hover's higher-specificity rule took over. Added .on-midnight .btn-filled (0,2,0) so the filled button's own text colour always wins inside a Midnight section, regardless of any future placement.
Two Critical findings: - 404.html's engage-cards section was not new: the page already had a real, site-owner-authored Phronesis/LinkedIn card pair before this refresh (confirmed via git show against the base branch), which Task 8's "no existing equivalent anywhere" premise wrongly assumed didn't exist. The migration silently overwrote both bodies with placeholder text and wrapped the loss in a PLACEHOLDER COPY marker that would have hidden it from the future content pass. Restored both original strings verbatim (including their own pre-existing em dash) and narrowed the placeholder marker to bracket only the genuinely new third card. - Past-event rows on now.html used `opacity: .55` to convey "past", which composites every descendant colour toward the card surface. Measured against the real card background, 8 of 10 affected text/UI pairings fell to 2.33-3.75:1, well under the 4.5:1 floor, on a site whose owner has a stated vision impairment. Replaced with explicit token colours per element (each independently verified against its actual background) so muting is a colour choice, not an opacity side effect. Two Important findings: - Two new em dashes in the schedule content Simon supplied directly (family holidays, Montreal trip) violated the project's own no-em-dash constraint; reworded with a comma and a full stop. - now.html's cards sit in a bare .container, not .container.prose, so the underline non-colour cue for inline links never applied to the five links inside them (BHP, SAP SuccessFactors, ServiceNow, AHRI, Phronesis), leaving link-vs-text contrast below 3:1. Extended the underline rule to also cover .card-filled/.card-outlined body links, rather than wrapping the cards in .prose, which would have capped the whole now-grid to reading-column width. Three trivial minors fixed while in these files: the On-Midnight outlined-button border was 2.78:1 against the 3:1 non-text floor, raised to .62 alpha (3.20:1, verified); a fonts.css comment described Roboto/Roboto Flex directories that never existed in this repo; and an undefined --md-sys-color-outline-var typo was silently masked by its own fallback value. Remaining minor findings (dropped outbound vendor links on now.html's event rows, unused .btn-outlined, a raw 999px value, portfolio.html's retained legacy .section-marker versus index.html's newer .phi-rhythm device) are disclosed as known items in the Task 11 PR rather than fixed here, none are defects a user would notice.
.phi-break had margin: var(--space-14) 0, zero horizontal margin, so once its parent exceeded the bar's own 680px max-width (any desktop viewport, in the footer's 1200px-wide container and 404.html's hero-to-engage-cards divider), it sat flush against the container's left edge instead of centering. Changed to margin: var(--space-14) auto. No effect where .phi-break already sits inside an exactly 680px-wide .prose column (its own max-width leaves no space to redistribute there). Found via Simon's own report of a left-aligned footer divider on wide viewports. Also scopes the .card-filled/.card-outlined link-underline rule (added in 67cd92e for Important 4) to exclude .btn-filled/.btn- outlined/.cta-button descendants. The earlier re-review caught that the unscoped selector was giving the Now page's "Read all of Phronesis" filled button an unintended hairline underline, since its <a> also sits inside a <p> inside a .card-filled.
.footer-tagline and .footer-orient are <p> elements, and the global
p { text-align: left; } rule (components.css:80) applies directly to
them, which always wins over an inherited value from an ancestor
(.footer-band's text-align: center) regardless of specificity math,
since a rule targeting the element itself is never beaten by
inheritance. Set text-align: center directly on both classes.
Confirmed live in Chrome (localhost preview) at 1600px viewport
width, before and after: the phi-break divider fix (f273300) alone
was not sufficient, this second, distinct rule was the actual cause
of the tagline/link line still reading as left-aligned.
Fixes #76. simonives.md has YAML front matter, so without this file GitHub Pages' default Jekyll build treats it as a page and renders it to simonives.html instead of serving the raw .md file, leaving the literal /simonives.md path 404ing. This site is hand-authored static HTML/CSS with no Jekyll templating in use, so disabling Jekyll entirely is correct, not a workaround: every file is now served exactly as committed. Pre-dates the Material Design 3 refresh, not a regression from it, confirmed via git log.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #76.
simonives.mdhas YAML front matter, so without a.nojekyllfile GitHub Pages' default Jekyll build treats it as a page and renders it tosimonives.html, leaving the literal/simonives.mdpath 404ing. This site has no Jekyll templating in use, so disabling Jekyll entirely is the correct fix, every file is served exactly as committed.Pre-dates the Material Design 3 refresh (PR #75), confirmed via
git log, not a regression from it. Found while verifying that #72's canonical-host fix still holds after the refresh,llms.txthas no front matter so it was never affected and passed that earlier check;simonives.mddoes have front matter and wasn't specifically re-tested at the time.Single-file change, no visual or content impact. Requesting the same expedited treatment as #72/#73 (issue, fix, verify, close) given this directly affects AI-crawler access to the canonical record.