Commit Graph
3 Commits
Author SHA1 Message Date
jeffryandClaude Opus 5 972717e561 deploy: nginx and git-sync, no image built
Serves loom.hypertheory-labs.dev from the site branch, which holds dist/ and
nothing else. Two public images; git-sync polls the branch and nginx serves the
volume, so publishing a new version is a push and there is no rollout.

This sidesteps the cluster's open gap on publishing container images rather than
closing it. The first workload that genuinely needs an image we built still hits
it, and nothing here is evidence the gap is smaller than it looked.

The HTTPRoute carries no hostname of its own, per public-access.md: it pins to
the loom listener by sectionName and inherits. A route with its own hostnames
stops inheriting and stops being portable between staging and production.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 10:20:59 -04:00
jeffryandClaude Opus 5 96794f3e32 reconcile externals.md: the lock's fourth column
First real reconcile. loomctl external check found externals.md moved, staged it,
apply took it, and the generator put a banner on the externals guide.

The guide did not actually need changing — it was written against the four-column
format a day before the document caught up. So this is the known limit doing
exactly what it does: the banner fires when a document moves, not when the
sentence a guide leaned on changed. It cannot be more precise, and the
.usages.md files are what say which sentence was leaned on.

The cart here was opened only so apply had somewhere to stage, and is discarded
rather than converted. What the conversation turned out to be: not a
conversation.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 09:52:24 -04:00
jeffryandClaude Opus 5 969524b8ea the loom conventions, rendered — and adopted the way the conventions say
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>
2026-09-08 09:51:16 -04:00