Skip to content

Add .nojekyll to fix simonives.md 404 (Jekyll front-matter rendering) - #77

Merged
simonives merged 30 commits into
mainfrom
dev
Sep 17, 2026
Merged

simonives merged 30 commits into
mainfrom
dev

Conversation

@simonives

Copy link
Copy Markdown
Owner

Fixes #76.

simonives.md has YAML front matter, so without a .nojekyll file GitHub Pages' default Jekyll build treats it as a page and renders it to simonives.html, leaving the literal /simonives.md path 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.txt has no front matter so it was never affected and passed that earlier check; simonives.md does 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.

simonives and others added 30 commits July 15, 2026 12:22
…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.
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.
@simonives
simonives merged commit 4134a16 into main Sep 17, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

simonives.md returns 404, GitHub Pages Jekyll renders it to simonives.html instead

1 participant