Skip to content

docs: a bilingual usage guide, published as a documentation site - #1

Merged
aethrox merged 4 commits into
masterfrom
claude/usage-guide-wiki-page-9o4hx2
Aug 26, 2026
Merged

docs: a bilingual usage guide, published as a documentation site#1
aethrox merged 4 commits into
masterfrom
claude/usage-guide-wiki-page-9o4hx2

Conversation

@aethrox

@aethrox aethrox commented Aug 26, 2026

Copy link
Copy Markdown
Owner

The README is a good reference and a poor guide. It answers "what is this" and "what are the flags", and never answers "how do I run my first lane", "why is this lane still pending", or "how do I write a brief that gets scored correctly". Development has stopped, so the reader this has to serve is one person setting a working design up to take it apart, not a team.

What this adds

A task-first guide, 13 pages, in the order that reader meets them: install, configure an agent, drive one lane end to end, write briefs, prepare the driven repository, operate it daily, use plans and revisions, install it as a service, wire the Claude Code bridge, the API, troubleshooting, and what it does not protect you from.

The whole of docs/ published as a site at https://aethrox.github.io/laneward/. MkDocs Material rather than the Pages Jekyll build, because the content needs two things that environment does not have: mermaid through superfences, since the architecture documents are mostly diagrams, and mkdocs-static-i18n for the bilingual guide. Existing documents are published exactly as they stand; none of their content changed.

The guide in Turkish as well as English. English stays canonical: it is the default locale, and any page without a .tr.md sibling falls back to it, which is the glossary, the architecture series and the evidence notes. Program output is not translated: error strings, refusal texts, gate reasons, route paths and the example briefs are verbatim in both locales, because a reader searching for what their terminal said has to find it.

One thing the README gets wrong

Everything in the guide was read off the source rather than off the README, which turned up a real defect in the quick start. owned_paths is an anchored glob over file paths in which * does not cross a /, so src/auth matches the file src/auth and nothing under it. The README's own example (bun scripts/new-lane.ts fix-login brief.md src/auth) therefore fails any lane that edits src/auth/login.ts, with an ownership violation, even when the work is correct.

Measured on a scratch repository with two changed files:

owned_paths Result
src/auth FAIL: ownership violation: src/auth/deep/util.ts src/auth/login.ts
src/auth/* FAIL: ownership violation: src/auth/deep/util.ts
src/auth/* src/auth/*/* PASS: 2 changed path(s), all within owned_paths

The guide documents this, with the table. The README example is left alone in this PR.

Verification

  • mkdocs build --strict passes with zero warnings; a broken internal link or a nav entry naming a missing file fails the build.
  • Both locale trees build, and every internal link and heading anchor resolves in both, checked with a script rather than by eye.
  • The site was rendered in a headless browser: tabs, both colour schemes, the language switcher, tables and admonitions. One bug found and fixed that way: Material's custom palette redefines --md-typeset-a-color on <body>, which beat the :root declaration and rendered every content link near-black.
  • Commands, flags, env names and exit codes were checked against src/ and scripts/, not against the README.

Notes

  • The Pages workflow enables Pages itself on its first successful run via configure-pages with enablement: true. If the repository's Actions permissions refuse that, the one-time manual step is Settings, then Pages, then Source: GitHub Actions.
  • Diagrams load mermaid from unpkg.com at view time, which is Material's own behaviour. This repository vendors pico.classless.min.css precisely to avoid that kind of dependency, so vendoring mermaid too is worth considering; not done here.
  • navigation.instant is deliberately not enabled: mkdocs-static-i18n cannot build a contextual language-switcher link with it on.

🤖 Generated with Claude Code

https://claude.ai/code/session_012iekFATyXcd1UYAXVjPwPk


Generated by Claude Code

claude added 4 commits August 26, 2026 20:36
The repository's documentation was readable only as loose files on GitHub:
a 21 KB README, a glossary, eleven architecture documents and fifteen
evidence notes, tied together by links and with no way in.

This builds docs/ as a site instead. MkDocs Material rather than the Pages
Jekyll build, because the content needs two things that environment does
not have: mermaid through superfences, since the architecture documents are
mostly diagrams, and mkdocs-static-i18n for the bilingual guide that
follows. Existing documents are published exactly as they stand.

The workflow enables Pages itself on its first successful run, and
`mkdocs build --strict` is the check: a broken internal link or a nav entry
naming a file that does not exist fails the build rather than shipping a
404. Dependencies are pinned; development has stopped and a floating
version would break this build long after anyone is watching.
The README is a good reference and a poor guide. It answers "what is this"
and "what are the flags", and never answers "how do I run my first lane",
"why is this lane still pending", or "how do I write a brief that gets
scored correctly". Development has stopped, so the reader this has to serve
is one person setting a working design up to take it apart, not a team.

Thirteen pages, in the order that reader meets them: install, configure an
agent, drive one lane end to end, write briefs, prepare the driven
repository, operate it daily, use plans and revisions, install it as a
service, wire the Claude Code bridge, the API, troubleshooting, and what it
does not protect you from.

Everything is read off the source rather than off the README, which turned
up one thing the README gets wrong by example: `owned_paths` is an anchored
glob over file paths in which `*` does not cross a `/`, so `src/auth` does
not cover `src/auth/login.ts`. Measured on a scratch repository, both the
failure and the pattern list that passes are in the guide.
AGENTS.md says the artifacts are English and the conversation is Turkish.
The guide is the one artifact where that split costs something: it is the
document a person reads while their hands are on the keyboard, and the
person driving this repository reads Turkish.

So the guide ships in both. English stays canonical: it is the default
locale, and mkdocs-static-i18n falls back to it for every page without a
`.tr.md` sibling, which is the glossary, the architecture series and the
evidence notes. Those are unchanged and stay English.

Program output is not translated. Error strings, refusal texts, gate
reasons, route paths, field names and the example briefs are quoted
verbatim in both locales, because a reader searching for what their
terminal said has to find it. Domain vocabulary stays English inside
Turkish sentences (lane, hub, conductor, worktree, brief, gate), matching
how the glossary defines it.
The site shipped on Material's stock indigo preset, one flat sidebar and a
table for the entry points. It read like a default.

What changed, and why each one:

- Top-level sections become tabs, so the guide, the reference, the
  architecture and the notes are four destinations rather than one long
  scroll of a sidebar. The home page hides the sidebar entirely; it has no
  section of its own and the empty rail was noise.
- A palette defined in one file rather than picked from the presets:
  near-black chrome, an indigo accent, and a slate dark scheme built on
  #0d1117 so the two schemes are one decision.
- Inter and JetBrains Mono, looser line height, tighter heading tracking,
  and rules on the section headings. Rounded, bordered code blocks,
  admonitions and tables, and identifiers that no longer wrap mid-token in
  the configuration table.
- The home page opens with a hero and ends in a card grid instead of a
  two-column table, in both languages.

`navigation.instant` is deliberately not enabled: mkdocs-static-i18n cannot
build a contextual language-switcher link with it on, and in a bilingual
site losing "same page, other language" costs more than instant loading
buys. The comment in mkdocs.yml says so, so nobody adds it back.

One real bug fixed along the way: Material's `custom` palette redefines
--md-typeset-a-color on <body>, which beat the :root declaration, so every
link inside the content rendered near-black. Verified by computed style
rather than by eye: links now resolve to the accent in both schemes.
@aethrox
aethrox merged commit 014e820 into master Aug 26, 2026
1 of 2 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.

2 participants