cyberine
Design notes

Website spec — implementation contract for "Parallel Cut"

Companion to website-master.md, which owns the IDENTITY (palette, type, signature suite, motion vocabulary). This file owns everything MASTER deliberately does not carry: information architecture, the complete URL mapping, the spacing scale, the content inventory, and the prototype's measured evidence. Produced for T664; approved (or amended) at T665.

Read MASTER first. Nothing here re-decides a value from it.

Update 2026-09-22: this spec describes the "Parallel Cut" direction, which was rejected at prototype the same day it was locked (see website-master-20260827-parallel-cut.md). The live source of truth is website-master.md (the "Six Instruments" direction, six marketing routes, not the single page this spec describes). The page counts and URL mapping below are as of 2026-08-27 and have since drifted from the source tree.

Scope note

T664's done-when says "nothing under docs/ or src/ is modified" — meaning the running VitePress implementation and the product source. This spec and MASTER are NEW files under docs/design/, which are design records rather than site implementation. No existing site file was touched to produce them.

The migration is redirect-free, and that is a finding

The site has never been published: no domain, no public origin, no deploy step, and CYBERINE_DOCS_ORIGIN is unset so no canonical URL was ever emitted. Therefore no external link, search index, or bookmark points at any current URL, and the migration owes no redirects. That is why the mapping below is free to normalize case (/FEATURES -> /docs/features) and to move the whole docs tree under a /docs prefix, both of which would be breaking changes on a published site.

Two obligations survive anyway:

  1. Internal links between docs pages are numerous and DO break. T669 must rewrite them, and T670's link scan over the built output is what proves it.
  2. If T671 publishes before T670 cuts over, the redirect-free window closes. Do not publish the VitePress site and then migrate — that ordering creates a redirect obligation out of nothing. T671 depends on T670 for exactly this reason.

Information architecture

Two surfaces, one token system, different boldness budgets (MASTER).

Marketing — /

A single page, no sub-routes. Section order is fixed by the argument it makes, each section owning one of the four signature moves or none:

#SectionSignature moveThe claim it earns
1HeroVerdict Gate (on load)one task -> N agents -> judge -> one verified winner
2Isolated worktreesWorktree Split (scroll)workers cannot collide; each returns a real git diff
3Judge evidenceDiff Gate (scroll)git apply + tsc --noEmit gate the winner; a worker's own claim is never trusted
4Cost-aware routingCost Admission (scroll)zero-marginal-cost workers preferred; a daily cap with admission control
5Observable runsnonerun.json + events.jsonl per run, indexed across every project
6SurfacesnoneCLI, fleet TUI, chat REPL, web dashboard, MCP server, hooks
7Installnonethe command, and the one link into the docs

Sections 5-7 carry no orchestrated move on purpose: four moves is the maximalist ceiling MASTER set, and a fifth would break the governing rule's claim that each move is the same N-to-1 collapse at a different scale.

No testimonial section, no metric counter, no logo wall — the product has no customers to cite, and MASTER forbids fabricating them.

Docs — /docs/*

Five groups. Sidebar order is the reading order for someone new, not alphabetical:

/docs
├── features                 what Cyberine supports (the catalog)
├── usage                    the recipe book (generated from repo-root USAGE.md)
├── providers/               18 pages - per-provider API + CLI reference
│   ├── (index)              the wiring map: env var -> adapter -> upstream doc
│   ├── <16 provider pages>
│   └── upstream tracking    changelog-watch, mcp-2.0-audit
├── design/                  16 pages - design notes and decisions
└── eval/                    2 pages - offline evaluation results

providers/ and design/ are reference material read by search and deep-link, not front to back. Both get an index page that is a real map rather than a link list — the current providers/README.md already does this (env var -> adapter -> upstream doc in one hop) and is the model to keep.

Search is required, not optional: the dev-tools playbook names "poor documentation with no search-first entry point" as a category anti-pattern, and 36 reference pages are unusable without it.

URL mapping — all 41 pages

Generated from the source tree, not typed by hand. /docs prefix throughout; Fumadocs serves content/docs/** at that root.

Old VitePress URLNew URLNote
/design/autonomy-loop/docs/design/autonomy-loopdirect
/design/bus-presence-auth-scope/docs/design/bus-presence-auth-scopedirect
/design/cli-flag-audit/docs/design/cli-flag-auditdirect
/design/cli-streaming-output/docs/design/cli-streaming-outputdirect
/design/code-context-3act/docs/design/code-context-3actdirect
/design/contextq-integration/docs/design/contextq-integrationdirect
/design/fleet-config-design/docs/design/fleet-config-designdirect
/design/hook-matcher-anchoring/docs/design/hook-matcher-anchoringdirect
/design/long-term-memory/docs/design/long-term-memorydirect
/design/loop-sync-dispatch-verify/docs/design/loop-sync-dispatch-verifydirect
/design/lsp-diagnostic-feedback-loop/docs/design/lsp-diagnostic-feedback-loopdirect
/design/persona/docs/design/personadirect
/design/plugin-marketplace-decision/docs/design/plugin-marketplace-decisionwas orphaned until 2026-08-27
/design/tui-config-interaction-standard/docs/design/tui-config-interaction-standarddirect
/design/website-master/docs/design/website-masterNEW 2026-08-27 - this direction doc
/design/website-theme-decision/docs/design/website-theme-decisionwas orphaned until 2026-08-27
/eval/code-context-3act-eval/docs/eval/code-context-3act-evaldirect
/eval/worker-profile-coverage/docs/eval/worker-profile-coveragedirect
/FEATURES/docs/featurescase normalized to lowercase
//MARKETING - content fully rewritten in T668, not migrated
/providers/anthropic/docs/providers/anthropicdirect
/providers/CHANGELOG-WATCH/docs/providers/changelog-watchcase normalized
/providers/claude-code-cli/docs/providers/claude-code-clidirect
/providers/cli-agents/docs/providers/cli-agentsdirect
/providers/cloud-native/docs/providers/cloud-nativedirect
/providers/codex-cli/docs/providers/codex-clidirect
/providers/command-code/docs/providers/command-codedirect
/providers/deepseek/docs/providers/deepseekdirect
/providers/direct-api/docs/providers/direct-apidirect
/providers/gemini-cli/docs/providers/gemini-clidirect
/providers/litellm/docs/providers/litellmdirect
/providers/mcp-2.0-audit/docs/providers/mcp-2.0-auditwas orphaned until 2026-08-27
/providers/minimax/docs/providers/minimaxdirect
/providers/moonshot-kimi/docs/providers/moonshot-kimidirect
/providers/ollama-cloud/docs/providers/ollama-clouddirect
/providers/ollama/docs/providers/ollamadirect
/providers/openai/docs/providers/openaidirect
/providers/opencode-cli/docs/providers/opencode-clidirect
/providers/opencode2-v2-beta/docs/providers/opencode2-v2-betadirect
/providers/openrouter/docs/providers/openrouterdirect
/providers//docs/providerswas a rewrites: entry in config.mts; Fumadocs uses index.mdx instead
/usage/docs/usageGENERATED from repo-root USAGE.md by scripts/sync-docs.mjs - keep the sync

Mapping rules that are decisions, not mechanics

  • / is not migrated. docs/index.md is a VitePress layout: home page whose entire content (hero, five feature cards) is replaced by T668's seven-section marketing page. Nothing in it carries over except the facts.
  • usage stays generated. scripts/sync-docs.mjs copies repo-root USAGE.md into the site at build time and USAGE.md remains canonical. The new site must keep this — hand-editing the docs copy is how a 6500-line recipe book forks.
  • providers/README.md becomes providers/index.mdx. The current site keeps the README filename (so the GitHub folder view works and the cyberine-project-provider-docs skill can point at it) and uses a rewrites: entry to serve it as the index. Fumadocs has no equivalent; the file is renamed and .claude/skills/cyberine-project-provider-docs/SKILL.md must be updated in the same change or that skill points at a deleted path.
  • Case is normalized. /FEATURES and /providers/CHANGELOG-WATCH become lowercase. Free now (see redirect-free above), never free again.

Spacing and density scale

Base unit 4px, geometric steps, bound to role tokens per MASTER's three tiers. Every padding, margin, and gap is a token multiple — an arbitrary px value in a component is a defect the layout audit will find.

Raw tokenpxUse
--cyb-space-04icon-to-label, hairline
--cyb-space-18chip padding, tight inner
--cyb-space-212input padding, dense stacks
--cyb-space-316compact card/section inner padding (the FLOOR — no panel goes below this on any side)
--cyb-space-424card padding, form-field gap
--cyb-space-532section rhythm
--cyb-space-648major section separation
--cyb-space-772marketing section separation (added above the generic ladder: a shout-once landing needs a step the docs never use)

Role bindings:

Role tokenMarketingDocsWhy they differ
--cyb-space-container-pad--cyb-space-5--cyb-space-4density is MEDIUM on marketing, HIGH on docs (MASTER dials)
--cyb-space-stack-gap--cyb-space-4--cyb-space-3same reason
--cyb-space-section--cyb-space-7--cyb-space-6the landing separates sections theatrically; docs do not
--cyb-space-lane-gutter--cyb-space-2n/athe gap between worker lanes; the ONE spacing token unique to the signature

--cyb-space-lane-gutter is load-bearing for the risk: it must stay constant while lane WIDTHS animate, otherwise the collapse reads as the whole grid squashing rather than lanes being eliminated.

Containment invariants (T670 asserts these with layout-audit.js)

Inherited verbatim from the rigor library — restated because the lane system is unusually good at violating them:

  1. Inner padding >= --cyb-space-3 on all four sides of every panel. No child flush to an edge.
  2. No child border-box beyond its container content-box, horizontally or vertically.
  3. No collision between non-siblings.
  4. Every vertical stack has a gap > 0.
  5. Siblings in a visual column share a left edge within 1px; in a row, a top edge within 1px. A 2-6px drift is a bug, not a design choice. Deliberate offset is >=8px and consistent. This is the invariant the lane fracture is most likely to break, because an animated grid-template-columns can land lanes on fractional pixels — the prototype below is where that gets caught.
  6. Gaps within one stack are token-consistent.

Responsive re-flow — the declared grid

QA asserts the grid THIS project declared, so it is declared here:

ViewportMarketing lanesDocs
360pxlanes become horizontal BANDS, stacked, preserving the task -> verdict sequence top to bottomsingle column, sidebar in a drawer
768pxlanes return as columns but capped at 3 visible + an overflow count ("+2 more workers") — a real re-flow, not a squeezed desktopcontent + collapsible sidebar
1280pxfull lane system, 5 lanes; body line length 60-75chsidebar + content + page outline

The 768px cap is the honest answer to a lane system on a tablet: five lanes at 768px would each be ~140px wide, which cannot hold a display face at any width setting. Capping at 3 + a count preserves the IDEA (N racing, one surviving) at a width the type can survive.

Content inventory

ContentVerdictNotes
docs/index.md hero + 5 feature cardsrewrittenT668 writes the 7-section page from scratch; the facts survive, the copy does not
HomeSections.vue (walkthrough, provider wall, quickstart, CTA)rewrittenits 01/02/03 step cards are on MASTER's blocklist; the Quickstart content and the provider wall FACTS are reused, the components are not
USAGE.md -> usageverbatim, generatedkeep the sync; never hand-edit the copy
FEATURES.mdverbatimalready the canonical catalog
18 providers/* pagesverbatimfact-checked pre-crawled reference; the cyberine-project-provider-docs skill depends on their content. Only providers/README.md changes, and only its filename
16 design/* notesverbatimdesign records; rewriting history is not migration
2 eval/* pagesverbatimmeasured results
providers/README.md retired-workers tableverbatimadded 2026-08-27; mirrors RETIRED_WORKERS

So: 36 of 41 pages migrate verbatim. The rewrite budget is the landing page and its components, nothing else. Any task that proposes rewriting reference prose is out of scope — that is a separate editorial decision, not part of a restyle.

Prototype

Location: .local/design/prototype-verdict-gate/ (gitignored, throwaway). It exists to answer three questions before T666 pays for a framework migration, and to be deleted after.

  1. Does the lane fracture read as intentional, or as a broken grid?
  2. Can Anybody's WIDTH axis animate together with lane widths at 60fps?
  3. Does the same composition survive both theme modes and 360/768/1280?

It is deliberately NOT the foundation: plain HTML + CSS + a little JS, no Next.js, no build step. If it cannot hold 60fps here — where there is no framework overhead at all — it will not hold in React.

Measured evidence

Recorded below after the prototype runs. An unmeasured 60fps claim is not evidence.