0e7871f395
validate / validate (push) Successful in 22s
- Stories gain a required type (report | essay); all 28 classified per the boundary rule now stated in EDITORIAL.md - Nav: What's up · Opine · Podcast · Book · Guides · Forum, each gated on real content (Forum waits on a forumUrl); logo is Home - /whats-up (reports, newest first) and /opine (essays, editorial order) share a StoryArchive component with subject filters - Static /tags/<tag> pages for subjects carried by 2+ stories; tags stay overlapping, never exclusive departments - /corrections: generated from revision history (commits beginning 'Correction:'), so the page cannot under-report - About, RSS, Corrections, Weekly briefing move to the footer Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
102 lines
2.9 KiB
Plaintext
102 lines
2.9 KiB
Plaintext
---
|
|
import BaseLayout from '../layouts/BaseLayout.astro';
|
|
import { correctionCommits } from '../lib/git';
|
|
import { site } from '../site.config';
|
|
|
|
const corrections = correctionCommits();
|
|
---
|
|
|
|
<BaseLayout title="Corrections" description="Substantive corrections to published work, drawn from the publication's own revision history.">
|
|
<section class="shell corrections">
|
|
<p class="eyebrow">The record</p>
|
|
<h1>Corrections</h1>
|
|
<div class="prose">
|
|
<p>
|
|
When published work turns out to be wrong in a way that matters, the fix is recorded here — drawn
|
|
automatically from the publication's revision history, not maintained by hand. A correction is a
|
|
commit whose message begins with <code>Correction:</code>; this page cannot show fewer corrections
|
|
than the repository contains.
|
|
</p>
|
|
<p>
|
|
Typo fixes and routine maintenance don't qualify. Changed claims, wrong facts, and misattributions do.
|
|
The <a href={`${site.repositoryUrl}/src/branch/main/EDITORIAL.md`}>editorial commitments</a> say what
|
|
readers may hold us to; the <a href={`${site.repositoryUrl}/commits/branch/main`}>full revision
|
|
history</a> shows everything else.
|
|
</p>
|
|
</div>
|
|
{corrections.length > 0 ? (
|
|
<ol>
|
|
{corrections.map((commit) => (
|
|
<li>
|
|
<time datetime={commit.date}>{commit.date}</time>
|
|
<span>{commit.subject.replace(/^Correction:\s*/, '')}</span>
|
|
<a href={`${site.repositoryUrl}/commit/${commit.hash}`}><code>{commit.hash}</code></a>
|
|
</li>
|
|
))}
|
|
</ol>
|
|
) : (
|
|
<p class="none-yet">
|
|
No substantive corrections have been required yet. That sentence should get harder to keep
|
|
writing as the archive grows — if it doesn't, be suspicious.
|
|
</p>
|
|
)}
|
|
</section>
|
|
</BaseLayout>
|
|
|
|
<style>
|
|
.corrections {
|
|
padding-top: clamp(3rem, 7vw, 6rem);
|
|
}
|
|
|
|
h1 {
|
|
max-width: 18ch;
|
|
margin: 0 0 2rem;
|
|
font-family: 'Newsreader Variable', Georgia, serif;
|
|
font-size: clamp(3rem, 7vw, 5.5rem);
|
|
font-weight: 500;
|
|
letter-spacing: -0.045em;
|
|
line-height: 0.92;
|
|
}
|
|
|
|
.prose p {
|
|
font-size: 1.05rem;
|
|
}
|
|
|
|
ol {
|
|
width: min(100%, var(--reading));
|
|
margin: 3rem 0 0;
|
|
padding: 0;
|
|
list-style: none;
|
|
border-top: 1px solid var(--ink);
|
|
}
|
|
|
|
li {
|
|
display: grid;
|
|
grid-template-columns: 8rem 1fr auto;
|
|
gap: 1rem;
|
|
padding: 0.9rem 0;
|
|
border-bottom: 1px solid var(--rule);
|
|
font-size: 0.9rem;
|
|
}
|
|
|
|
time,
|
|
code {
|
|
color: var(--muted);
|
|
font-family: 'IBM Plex Mono', monospace;
|
|
font-size: 0.7rem;
|
|
}
|
|
|
|
.none-yet {
|
|
width: min(100%, var(--reading));
|
|
margin-top: 3rem;
|
|
padding: 1.5rem;
|
|
border: 1px dashed var(--rule);
|
|
color: var(--muted);
|
|
}
|
|
|
|
@media (max-width: 600px) {
|
|
li { grid-template-columns: 1fr auto; }
|
|
li span { grid-column: 1 / -1; grid-row: 1; }
|
|
}
|
|
</style>
|