Astro Starlight over .loom/externals/. Every reference page is a copy of a document published by another loom repository, adopted with loomctl, locked to the etag it was fetched at. Nothing is written twice. Two kinds of page. Generated ones are overwritten every build because nobody typed them. Guides are hand-written, never overwritten, and stamped in frontmatter with the etags they were written against; when a source moves, the build renders a banner onto the page asking whether it is still true. It cannot answer that — only a person can — so it asks where a reader will see it too, and the site degrades honestly instead of reading as authoritative and being wrong. npm run ack is the person saying they re-read it. Declined: having the build stage a polad into the cart. loomctl external check does that and is right to, but a docs build runs in CI and in worktrees where there is no cart, and staging a polad is an act of judgment. The build reports; a person raises. The guides are worked examples rather than explanations, deliberately. An explanation is a second saying of a rule owned on the page beside it and goes stale silently; an example goes stale visibly, because the artifacts in it are the wrong shape. Generation is byte-deterministic — locks are walked in path order, no timestamps — because the diff is most of the value. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
35 lines
1.3 KiB
JavaScript
35 lines
1.3 KiB
JavaScript
import { defineConfig } from 'astro/config'
|
|
import starlight from '@astrojs/starlight'
|
|
|
|
// The sidebar is autogenerated from directories, so adopting a document and
|
|
// re-running `npm run generate` is the whole of adding a page. Nothing here
|
|
// names a document; a config that listed them would be a second place to
|
|
// update and would go stale silently.
|
|
export default defineConfig({
|
|
site: 'https://loom.hypertheory-labs.dev',
|
|
srcDir: './src',
|
|
integrations: [
|
|
starlight({
|
|
title: 'loom',
|
|
description:
|
|
'Conventions for holding what a repository knows, so that somebody arriving — person or agent — can find it.',
|
|
social: [
|
|
{
|
|
icon: 'seti:git',
|
|
label: 'Source',
|
|
href: 'https://git.hypertheory-labs.dev/loom',
|
|
},
|
|
],
|
|
editLink: { baseUrl: 'https://git.hypertheory-labs.dev/loom/docs/_edit/main/' },
|
|
sidebar: [
|
|
{ label: 'Start here', link: '/' },
|
|
{ label: 'bedrock', autogenerate: { directory: 'bedrock' } },
|
|
{ label: 'externals', autogenerate: { directory: 'externals' } },
|
|
{ label: 'annotating', autogenerate: { directory: 'annotating' } },
|
|
{ label: 'cart', autogenerate: { directory: 'cart' } },
|
|
],
|
|
customCss: ['./src/styles/loom.css'],
|
|
}),
|
|
],
|
|
})
|