Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions site/public/llms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -61,3 +61,4 @@ Full findings: https://murphysig.dev/benchmark
## Optional

- [GitHub Repository](https://github.com/Round-Tower/murphysig): Source code, CLI tool, and project history
- [About the Author](https://murphysig.dev/about): Kevin Murphy — creator of MurphySig, Round Tower (round-tower.ie)
32 changes: 25 additions & 7 deletions site/public/sitemap.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,43 +2,61 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://murphysig.dev/</loc>
<lastmod>2026-04-19</lastmod>
<lastmod>2026-07-10</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://murphysig.dev/spec/</loc>
<lastmod>2026-04-19</lastmod>
<lastmod>2026-07-10</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://murphysig.dev/benchmark/</loc>
<lastmod>2026-04-19</lastmod>
<lastmod>2026-07-10</lastmod>
<changefreq>monthly</changefreq>
<priority>0.85</priority>
</url>
<url>
<loc>https://murphysig.dev/launch/</loc>
<lastmod>2026-04-23</lastmod>
<lastmod>2026-07-10</lastmod>
<changefreq>monthly</changefreq>
<priority>0.85</priority>
</url>
<url>
<loc>https://murphysig.dev/rescore/</loc>
<lastmod>2026-07-10</lastmod>
<changefreq>monthly</changefreq>
<priority>0.75</priority>
</url>
<url>
<loc>https://murphysig.dev/whitepaper/</loc>
<lastmod>2026-02-12</lastmod>
<lastmod>2026-07-10</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://murphysig.dev/signed/</loc>
<lastmod>2026-07-10</lastmod>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://murphysig.dev/about/</loc>
<lastmod>2026-07-10</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://murphysig.dev/llms.txt</loc>
<lastmod>2026-04-19</lastmod>
<lastmod>2026-07-10</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://murphysig.dev/spec.txt</loc>
<lastmod>2026-04-19</lastmod>
<lastmod>2026-07-02</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
Expand Down
12 changes: 10 additions & 2 deletions site/src/layouts/ArtLayout.astro
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,10 @@
* reveal styles so no-JS readers get the final render; a body-end
* IntersectionObserver adds .mviz-in on scroll and drives the
* [data-countup] hero figures. Both respect prefers-reduced-motion.
*
* 2026-07-10 (Kev + claude-fable-5): SEO backlog pass. New optional
* ogType prop (defaults to "website") so long-form posts can declare
* og:type=article per page. Added /about to the footer nav.
*/

import '../styles/global.css';
Expand All @@ -47,13 +51,16 @@ interface Props {
* than a duplicated WebSite stub on every URL.
*/
schemaJson?: object;
/** Open Graph object type. "article" for long-form posts; defaults to "website". */
ogType?: string;
}

const {
title,
description = "A human-readable provenance standard for creative work.",
canonical = "https://murphysig.dev",
schemaJson
schemaJson,
ogType = "website"
} = Astro.props;

const siteTitle = "MurphySig";
Expand Down Expand Up @@ -87,7 +94,7 @@ const renderedSchema = schemaJson ?? defaultWebsiteSchema;
<link rel="canonical" href={canonical} />

<!-- Open Graph / Facebook -->
<meta property="og:type" content="website" />
<meta property="og:type" content={ogType} />
<meta property="og:url" content={canonical} />
<meta property="og:title" content={fullTitle} />
<meta property="og:description" content={description} />
Expand Down Expand Up @@ -132,6 +139,7 @@ const renderedSchema = schemaJson ?? defaultWebsiteSchema;
<a href="/benchmark" class="hover:text-black transition-colors">Benchmark</a>
<a href="/signed" class="hover:text-black transition-colors">Registry</a>
<a href="/whitepaper" class="hover:text-black transition-colors">Whitepaper</a>
<a href="/about" class="hover:text-black transition-colors">About</a>
<a href="https://github.com/Round-Tower/murphysig" class="hover:text-black transition-colors">GitHub</a>
<a href="https://github.com/kpmmmurphy" class="hover:text-black transition-colors">@kpmmmurphy</a>
</nav>
Expand Down
10 changes: 9 additions & 1 deletion site/src/layouts/MarkdownLayout.astro
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,13 @@
* generous spacing (line-height 1.8), proper header margins.
*
* Confidence: 0.9 - standard layout wrapper
*
* Reviews:
*
* 2026-07-10 (Kev + claude-fable-5): SEO backlog pass. Forwards
* frontmatter.ogType to ArtLayout (launch + whitepaper declare
* "article"); KEVIN Person url now points at /about/ so per-page
* schema author references resolve to the new author page.
*/

import ArtLayout from './ArtLayout.astro';
Expand All @@ -17,7 +24,7 @@ const { frontmatter } = Astro.props;
const path = Astro.url.pathname.replace(/\/$/, '');
const canonical = `https://murphysig.dev${Astro.url.pathname}`;

const KEVIN = { "@type": "Person", "@id": "https://murphysig.dev/#kevin", "name": "Kevin Murphy", "url": "https://murphysig.dev" };
const KEVIN = { "@type": "Person", "@id": "https://murphysig.dev/#kevin", "name": "Kevin Murphy", "url": "https://murphysig.dev/about/" };
const ROUND_TOWER = { "@type": "Organization", "@id": "https://round-tower.ie/#org", "name": "Round-Tower", "url": "https://round-tower.ie" };

let schemaJson;
Expand Down Expand Up @@ -116,6 +123,7 @@ if (path === '/spec') {
description={frontmatter.description}
canonical={canonical}
schemaJson={schemaJson}
ogType={frontmatter.ogType}
>
<header class="mb-16 border-b border-neutral-200 pb-8">
<h1 class="text-4xl md:text-5xl font-serif mb-4">{frontmatter.title}</h1>
Expand Down
109 changes: 109 additions & 0 deletions site/src/pages/about.astro
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
---
/**
* Signed: Kev + claude-fable-5, 2026-07-10
* Format: MurphySig v0.4 (https://murphysig.dev/spec)
* Prior: Unknown (new file, no signature existed before this edit)
*
* Context: Author page for E-E-A-T — the site made empirical claims
* with no page saying who stands behind them. Every fact here is
* lifted from what the site already states (launch.md, README,
* whitepaper); nothing new is claimed. Person JSON-LD carries the
* same @id (#kevin) that the per-page schemas already reference as
* author, so the graph now resolves to a real page.
*
* Confidence: 0.85 - content is grounded and small; less sure the
* understated length is what an E-E-A-T crawler ideally wants.
* Open: Should this page eventually list external reviews of the
* spec (reviews/ dir) as third-party signals?
*/

import ArtLayout from '../layouts/ArtLayout.astro';

const canonical = "https://murphysig.dev/about/";

const schemaJson = {
"@context": "https://schema.org",
"@type": "ProfilePage",
"@id": `${canonical}#page`,
"url": canonical,
"name": "About Kevin Murphy",
"inLanguage": "en",
"mainEntity": {
"@type": "Person",
"@id": "https://murphysig.dev/#kevin",
"name": "Kevin Murphy",
"alternateName": "Kev Murphy",
"url": canonical,
"description": "Software developer and creator of MurphySig, a human-readable provenance convention for human-AI collaborative work.",
"worksFor": { "@type": "Organization", "@id": "https://round-tower.ie/#org", "name": "Round-Tower", "url": "https://round-tower.ie" },
"sameAs": [
"https://round-tower.ie",
"https://github.com/kpmmmurphy",
"https://github.com/Round-Tower"
],
"knowsAbout": [
"Human-AI collaboration",
"Code provenance",
"Kotlin Multiplatform",
"Swift",
"AI benchmarking"
]
}
};
---

<ArtLayout
title="About"
description="Who makes MurphySig. Kevin Murphy — software developer at Round Tower, creator of the MurphySig provenance convention and the benchmark behind it."
canonical={canonical}
schemaJson={schemaJson}
>
<header class="mb-16 border-b border-neutral-200 pb-8">
<h1 class="text-4xl md:text-5xl font-serif mb-4">Kev Murphy</h1>
<p class="font-mono text-sm text-neutral-500">
Author of MurphySig &bull; <a href="https://round-tower.ie" class="hover:text-black transition-colors">Round Tower</a>
</p>
</header>

<article class="prose prose-lg max-w-none">
<p>
I build software independently under <a href="https://round-tower.ie">Round Tower</a> —
across edtech (Dyslexia.ai), AI tooling (<a href="https://github.com/Round-Tower/m1k3">M1K3</a>,
an on-device LLM assistant), maps (Cartogram), meditation (Rubin), and a
tacit-knowledge platform (Clair). Mostly Kotlin Multiplatform and Swift.
</p>

<h2>Why MurphySig exists</h2>
<p>
I've shipped a lot of AI-collaborative code, and I started losing track of what
<em>I</em> wrote, what the model wrote, what we wrote together, and how confident
I was when I wrote it. MurphySig is the convention I built to stop that —
a comment block that records who made what, when, with what confidence, and
what remained uncertain. The <a href="/spec">spec</a> is the standard;
the <a href="/whitepaper">whitepaper</a> is the argument.
</p>

<h2>How the claims here are made</h2>
<p>
Every behavioural claim on this site is backed by a
<a href="/benchmark">reproducible benchmark</a> — and when a result doesn't
survive a control or a re-score, the correction is published, not buried:
the v0.4 spec <a href="/benchmark">deleted an unsupported claim</a>, and one
quotable headline <a href="/rescore">didn't survive re-scoring</a> and says so
in public. I also use the convention daily on my own repos —
126+ signed commits in the first 90 days, documented in the
<a href="/launch">field report</a>.
</p>

<h2>Elsewhere</h2>
<ul>
<li><a href="https://github.com/kpmmmurphy">github.com/kpmmmurphy</a> — personal</li>
<li><a href="https://github.com/Round-Tower">github.com/Round-Tower</a> — the org, including <a href="https://github.com/Round-Tower/murphysig">this site's source</a></li>
<li><a href="https://round-tower.ie">round-tower.ie</a></li>
</ul>

<p class="text-neutral-500">
Sign your work. Future-you is the first reader.
</p>
</article>
</ArtLayout>
6 changes: 6 additions & 0 deletions site/src/pages/launch.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ title: A 90-day field report on signing AI-collaborative code
version: 0.4
date: 2026-04-23
description: I built a natural-language provenance convention for human-AI collaboration. I used it on 137+ commits across 7 of my own active projects in 90 days. Here is what worked, what did not, and what the empirical tests showed.
ogType: article
---

*A field report from the only person who has used MurphySig daily — me. Honest numbers, including the unflattering ones.*
Expand Down Expand Up @@ -123,4 +124,9 @@ is double-counted in spirit if not in fact), and whether HN's tone
preference for "show, don't tell" lands or reads as boastful.
Open: Should the v0.4 stability claim go in the title to give HN a
crisper hook? Should the cross-family ask be the lead instead of buried?

Reviews:

2026-07-10 (Kev + claude-fable-5): Metadata only — frontmatter
ogType: article so the layout emits og:type=article. No content change.
-->
1 change: 1 addition & 0 deletions site/src/pages/whitepaper.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ title: "MurphySig: Foundational Whitepaper"
version: 0.0.2
date: 2026-02-12
description: The foundational whitepaper for MurphySig - why legible provenance matters in the age of AI collaboration.
ogType: article
---

**Authors**: Kevin Murphy, Claude (claude-opus-4-6-20250610)
Expand Down