Skip to content

Release: the AI shelf stocks in the background, and keepsimple.io/ai-atlas is finished - #228

Merged
manager merged 17 commits into
mainfrom
dev
Sep 11, 2026
Merged

Release: the AI shelf stocks in the background, and keepsimple.io/ai-atlas is finished#228
manager merged 17 commits into
mainfrom
dev

Conversation

@manager

@manager manager commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

The batch that has been on staging since 03:53 Yerevan, verified on the staging container: the page answers 200, the new words are in the HTML, the dark palette is in the CSS bundle, the fonts serve as WOFF2 and the old TTF is gone.

Library. A roll no longer holds the request open: it answers at once and works on in the background while the client polls. The model call is handed to the relay as a job, so the 100s edge no longer cuts a run that is still being written, and a job the relay forgot is dealt again instead of held open. From the review on #227: a running roll now renews its marker every minute, so a roll that legitimately runs long is never declared stale under itself and rolled twice; lock, ban, unban and preference wait for the roll instead of being silently overwritten when the board lands; and when the poll allowance runs out the shelf says so instead of saying "stocking" for the rest of the session.

AI Atlas. keepsimple.io/ai-atlas is the Terminal Atlas now, written in the owner's voice: the six stages of one task, fifteen mechanism tiles, four resources and the ownership ring. The Result stage closes the loop back to Project. Hover works on every ring and the lines are drawn where they were missing. Dark mode arrives on the site's own switch, no second theme, with text at 4.5:1 or better throughout. The rail card is capped at the height of the map and clips with a fade instead of offering a scrollbar the pointer can never reach. The fonts ship compressed, 1.72 MB to 0.60 MB.

Guard. A commit that adds private infrastructure data is refused at commit time, and the Terminal's own cross-link sentences are stripped from what ships.

All 19 review comments on #227 are answered: 15 fixed, 4 closed with a reasoned position.

CI green on dev, type-check green, yarn build green locally before the push.

manager and others added 17 commits September 10, 2026 18:52
Measured on production tonight: a first board on Wolf's library took longer
than the edge would hold the request, which closed it at 60 seconds. The
board landed anyway, a minute later, unseen by the browser that asked for it,
and the owner would have read a gateway error where a shelf was being filled.

The roll no longer runs inside the request. The route starts it, records the
moment it started, answers "rolling", and returns; the work goes on in the
container, which is long-lived, and writes the board when it lands. The shelf
asks again every four seconds until the board stands, showing the working
state it already had. A roll recorded more than five minutes ago is treated
as gone, so a container recreated mid-roll does not leave the shelf waiting
for something that is not coming.

The note the engine leaves is stored beside the board rather than returned
once, so the reason a roll came back short survives the poll that finds it.

Probed with the engine stubbed: the first ask answers rolling at once, a
second ask does not start a second run, the board lands on the next poll,
and the marker is cleared with the note.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…a seal

Two things, both on the AI surfaces in the dark reading.

The writing on a cover was disappearing. `--gradient-cover-placeholder` is
declared on :root out of `--cream` and `--beige`, and the dark theme sets
those on `body.darkTheme .library`, a different element: the gradient's own
var()s were resolved at :root and inherited down frozen at their daylight
values. So the cover face stayed paper while `--black-rich` and
`--gray-darkest` turned light on the same element, and the title, the author
and the magic book's own line were light ink on light paper. Measured off
Wolf's screenshot: paper #f2ece2, ink #dbd3c8.

The face is right to stay paper: the book mockup under every cover is a
photograph and does not turn at night. So the ink stops turning instead.
`--ink-on-cover`, `--ink-on-cover-soft`, `--wash-on-cover`,
`--accent-on-cover` and `--rule-on-cover` are declared once and never
redefined by the theme, and everything that sits on a printed face reads
them: both cards' titles and authors, the score slip, the lock and ban
buttons, the new-ground mark, the magic book's blank line and its icon.

The empty places on the AI shelf were rectangles the colour of the page,
which at night made them the page. They are seals now: a bevelled face the
size of a cover with a rune cut into it, drawn in the same straight-stroke
hand as the library's monograms, two rules where a title will be, and a
light behind it that breathes on its own beat. Eight marks, so thirteen
places never read as one drawing repeated. While the engine works the row
lights in order, a beat apart, so the wait reads as a spell running down the
shelf. Reduced motion holds all of it still.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The road to the engine, not the engine, sets the ceiling: between a project
container and the relay stands an edge that closes a request at 100 seconds,
and two opus calls measured from production at high effort took 107 and 117.
Latency here is mostly what the model writes, so each half now asks for
twelve and five candidates instead of fourteen and six, which is what the
board needs plus a margin the second pass covers. The picks themselves are
untouched: opus 5, high effort, same rubric.

A call the edge cuts mid-answer is now told apart from a call that answered
nothing: the shelf says the engine ran long and the line closed, the journal
records it, and nothing is retried automatically, because the model kept
writing on the other side and the subscription has already paid once.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The Order built the relay's job mode tonight on the word I gave: the same
Messages body posted to the job endpoint comes back accepted at once, and the
answer is collected by polling. That removes the ceiling the edge put on this:
a proxied request dies at 100 seconds, opus 5 at high effort on a library this
size runs past it, and until now the roll was racing a clock it could not see.

Every hop is short now and the model takes as long as it takes. A poll that
fails on the way is not the job failing: the work is running and the
subscription has already paid for it, so the next poll asks again until the
deadline, and only a job the relay has forgotten or a run past five and a half
minutes is given up on. A relay that does not know the job endpoint answers
404 and the call falls back to the old held-open request, so a container wired
before tonight keeps working.

Probed both paths on the dev tree against a relay stub: two halves handed over
in the same second, polled while running, the board of thirteen landing on the
poll after; and with the job endpoint answering 404, the same roll going
through on the direct path.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The Order's correction, and it is right: a 404 on handing the job over means
this relay does not know jobs at all, which is where the old held-open call
belongs, but a 404 while polling means something else entirely. The job is
gone, from a restart or from its hour of keeping, and whatever was running
behind it died with the relay that forgot it. Holding a call open there would
make the subscription pay twice for one answer.

So a lost job is dealt again on the same path, once, and only while enough of
the deadline is left to be worth it. Past that the roll says the relay lost
the job rather than quietly starting a third.

Probed with a stub that forgets both halves on their second poll: each was
handed over again and the board of thirteen landed, with four jobs in the
relay's log and no direct call anywhere.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The Atlas left here at revision 93c5744 and ran on the Terminal for a month.
Wolf asked for what it learned there to come back to keepsimple.io/ai-atlas.
This takes the view, not the content: the map still describes KeepSimple, in
English and Russian, on our own data and our own metrics.

What came back, all of it worked out on this same composition:

- The Security passage runs on one clock. The dot's fall and every ring's
  light are painted from one solved trajectory, so a ring brightens exactly
  as the dot crosses it and goes dark before the next fall. It was two
  guesses before, an SMIL animation and separate CSS timing that never met.
  Reduced motion leaves the dot hidden and the rings dark.
- Callouts end inside the frame. Each scrolls in place, and the last two rows
  are held shorter still; stacked under 1100px they get their height back.
- The dossier heading sits inside the scrolling panel and wraps, so a long
  title no longer needs a measured padding under it and no longer covers what
  it names.
- Every node and every dossier row that leads somewhere takes focus and
  answers Enter, and the focus ring is the Atlas red.
- A topics control in the rail opens any dossier without hunting for its node.
- Switching Environment and Security crossfades instead of cutting.
- The type floor is raised: prose at 14, labels at 12, nothing under it.

What did not come back: the Terminal's own content, its clockwise task route
and stage supports, which describe a task moving through the harness and mean
nothing on this map, and its doctrine tile, which replaced our illustration.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Wolf's word, twice: replace, not merge. The previous page, its content and
its locale strings are gone. What stands at /ai-atlas is the Atlas as the
Terminal serves it at revision 64: their view, their adapter, their copy and
their guide, with the composition they took from here in the first place.

- `src/pages/ai-atlas.tsx` is their `atlas-source/atlas.tsx`, with the frame's
  `createRoot` bootstrap dropped, the guide read from `/ai-atlas/guide.json`
  on this host, and our SEO head kept over it.
- `src/lib/aiAtlas/` carries their adapter and copy beside the security
  passage. The adapter turns the guide into six stages, Project through
  Result, and seventy-four dossiers.
- `src/styles/ai-atlas.css` is their `original.css` followed by their
  integration rules, with the asset URLs pointed at `/ai-atlas` and every
  global rule held to `body.ai-atlas-page`: the Atlas owns this page, not the
  document, because it shares a site here.
- `public/ai-atlas/` gains the guide, the paper texture and the seven local
  font files their sheet asks for.

Two consequences worth stating plainly. The page is English only, as the
Terminal's is; `/ru/ai-atlas` now renders English. And the content is the
Terminal's own documentation, which until tonight sat behind Access.

Probed on the dev tree: page, guide, fonts, texture all 200, and the adapter
run against the shipped guide gives six stages and seventy-four dossiers.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…n click

The Terminal's guide described each mechanism from the inside, for a reader
who already lives in Terminal. The page is for a reader who does not, so the
prose on every card is now Wolf explaining the feature: what it lets him do
and why it exists. The guide keeps the ids, stages and links; the prose lives
in src/lib/aiAtlas/features.ts and survives a guide refresh.

A click now opens the card in a modal over the sheet, hover keeps the rail.
Esc, the scrim or the stamp closes it; topics inside open in place with a
crossfade. Enter and exit are eased and honor reduced motion. The card's
paragraphs render as paragraphs in both the rail and the modal.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The Terminal's export of the guide brought its source references (file,
line, sha256 of the Terminal's code), its placement notes and a tool
inventory onto a public path. The page renders none of it. A script strips
the guide to ids, titles, prose, children, links and system nodes, and runs
after every refresh. 46 KB to 25 KB, same six stages and seventy-four
dossiers out of the adapter.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The guide describes the private Terminal. It now lives beside the adapter,
is imported into the page and rendered on the server, and no longer sits
under public/ where any request could pull it as JSON. /ai-atlas/guide.json
answers 404. The strip script follows the file.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This repository is public. The guard reads the added lines of the staged
diff and refuses source fingerprints (sha256, file + line), internal paths
and unstripped exports under public/. Existing lines are not judged. No
bypass; the offending line is rewritten. One journal line per run.

The charter records the rule and the incident that produced it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Every entry now carries the name printed on its card, and the twelve black
tiles on the outer ring are marked TILE so the one being edited is found by
its label rather than by an id. A header states the rules of the file: a
string is a paragraph, a key is never renamed.

check-features.mjs reports a key that matches no card, which would be words
that never show.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ows them

The tiles now carry the features he actually wants a reader to see, and the
prose on each is his: why the thing exists, what it does for him, what broke
before it existed.

Map changes that follow from that: Composites is Composite Keys, Attachments
gives its tile to Smart Queuing, Tracks folds into Engine switch and Live
Steering takes the free slot, Session resume becomes Session start, Local
CLAUDE.md joins Prepare as a third tile, and Doors leads the Work stage. A
stage carrying three tiles gets a wider arc so they do not overlap.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Involve an agent becomes AI Collaboration and says the ownership rule first.
Human Collaboration is new: the roster carries people with handles, a line
addressed to one leaves for Telegram, and a granted person can hand a task
back and receive the result in the same chat. Skills leaves the tile row and
stays a card; it is a commodity now and the tile was spent on it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…the page has a night

The map now says what it is. The header reads WOLF'S TERMINAL and the banner
under it names the page. Ring II is Resources, not Context: it holds what every
stage draws on. Ring III finally prints its own name; it was filtered out of the
render. Project agents becomes Colleagues and carries both diamonds the legend
names, people and agents.

Result gains Discipline as its third tile: a result sent back is read overnight
and comes back as a rule. Conversation history says why the record is kept, the
monthly review that proposes what to change. The six stage cards were written
before the tiles existed and are rewritten to match them.

The four resource cards carry real content: the memory layers and what is
mined from them, the tools including the network, the engines and where local
models actually stand, the roster of colleagues. The Order is described as the
orchestrator it is.

The Terminal's own cross-links are gone from the guide and from the bundle:
34 sentences in another voice under cards written in Wolf's. Rows under a card
are its own contents, labelled by what they are.

Hover now works on every ring. One relation graph drives it: Wolf to The Order,
The Order to each resource, each resource to the stages and tiles that use it,
and the lines are drawn where they were missing. Stage-to-mechanism wires are
legible before a stage is picked.

Dark mode arrives on the site's own switch, no second theme: the palette flips
on the variables the sheet already draws with, and every hardcoded paper colour
gets its night value, modal, Security, dropdown and scrollbars included. Text
holds 4.5:1 or better throughout.

The rail card is capped at the height of the map and clips with a fade and
"click to read more". It used to grow past the sheet and offer a scrollbar that
could not be reached, because the card follows the pointer.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…e atlas fonts ship compressed

From the review on #227.

A roll now polls a relay job, so one model call can legitimately run for
minutes and a whole roll can pass the five-minute staleness window while it is
still working. The running roll renews its marker every minute, so the window
means "no heartbeat", not "started long ago", and a live roll is never rolled a
second time under itself.

A roll answers at once and works on in the background, so `busy` no longer
covers it. Preference, lock, ban and unban now wait on the roll as well: the
roll replaces the whole board from the snapshot it started with, so a write
made while it ran was silently overwritten when it landed.

When the poll allowance runs out the shelf says the roll is still working and
a reload will show where it got to, instead of saying "stocking" for the rest
of the session.

Two comments claimed more than the code does: the store's serial queue and the
shelf's roll set are one process, and the relay's resubmit-on-404 assumes the
single relay container. Both now say so, and say what replicas would need.

On the atlas: the seven faces shipped as raw TTF against the repo's own web
font rule, 1.72 MB on a public page. They are WOFF2 now, 0.60 MB, and the
stylesheet version is bumped so nobody keeps the old sheet. Skills lost its
tile in the last commit and its tag said otherwise. The features checker
mirrors the adapter's id rule instead of accepting ids the page never reads.
The security rings no longer carry a transition the animation frame fights.
The rail no longer shows the same card that the modal holds open in front of
it, and Tab stays inside the modal.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…d the AI Atlas is finished (#227)

Library: the AI shelf is stocked without holding the request open, and the AI Atlas is finished
@github-actions

github-actions Bot commented Sep 10, 2026

Copy link
Copy Markdown

Claude finished @manager's task in 5m 57s —— View job


Reviewing PR #228

@manager
manager merged commit 59a2ca4 into main Sep 11, 2026
4 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.

1 participant