Decisions log
Kevin’s dated rulings on process, product, design and the repositories, what each replaced, his words and the gate that holds it.
In his Claude Code and Codex sessions, Kevin Liu rules on how General Translation (GT) work is done, across process, product, design and the repositories. This log lists the rulings that set or replaced a standing practice from 2026-07-31 to 2026-10-20. Each row gives the date, the ruling, the practice it replaced, his words where the ruling needs a source, and the lint, gate or skill that holds it. Read it before you change a GT standard, and whenever an older note, transcript or skill gives conflicting guidance.
Using the log
- The later ruling holds. Guidance with an earlier date in a memory note, a transcript or a skill gives way to a later row here, and the change that finds the conflict corrects the stale text. When a skill changed after a row and the two disagree, the skill holds and this log needs a fix.
- Design verdicts are recorded in full in verdicts.md in
gt-aesthetic, with Kevin's words and what was wrong. Their rows here are one line and link there. - The skills named in the last column hold the procedures. A row states the ruling and where it is enforced.
- Each path names its repository: gt-cloud, Prototemplate, or
content:for generaltranslation/content, which holds the docs and blog source. - A row quoting a transcript carries the day the transcript stamped on Kevin's message, which is UTC. A design verdict row carries its date in verdicts.md, and a row with no message behind it carries the date its skill or memory note gives. Those two use Kevin's local date in California, so they can sit one day before the UTC stamp of the same evening.
- Agents do not change a standard on their own. Bring Kevin the current row with a recommendation. When he rules, add a dated row that names what it replaced, and update the lint, gate or skill that holds it in the same change.
July and August 2026
| Date | Ruling | Replaced | Kevin's words | Held by |
|---|---|---|---|---|
| 2026-07-31 | Scrolling is native on every GT surface: no smooth scrolling, scroll hijacking or inertia library. A scroll story scrubs its timeline on the page's own scroll. | Lenis smooth scrolling, which Kevin asked for on 2026-07-22, 07-28 and 07-30 for the scroll stories and the presenter | "remove smooth scrolling from everything, i hate how it keeps going after i stop scrolling" | no-smooth-scroll in gt-cloud (landing, packages/ui) and Prototemplate pnpm lint:code, with /present exempt in Prototemplate's .oxlintrc.json; gt-motion sections 1 and 6 |
| 2026-08-01 | Monospace is for numbers and code only. Headings, paragraphs, labels, pills and social cards are set in Inter. | Mono labels, pills and OG text in the July explorations | "mono should only be used for numbers." | mono-is-not-voice; inter-only allows Geist Mono for code only; gt-brand section 4 |
| 2026-08-04 | Mock layouts and plan images are literal specs, and a display head holds two lines at most. Locadex appears as an isometric drawing that carries its mark, and a gif of it is refused. | Sections that kept the copy and drifted from the Figma layouts; three-line heads; a Figma note proposing a gif of Locadex | verdicts.md, 2026-08-04 | no-gif-mark; Prototemplate's skills/gt-aesthetic/scripts/measure-type.mjs flags a display head over two lines |
| 2026-08-06 | The Dossier (/d/singularity-dossier) is the completed reference for the site. Product surfaces follow the brand deck since 2026-09-25, for the brand the 2026-10-06 row below holds, and for the site the 2026-10-07 row below holds. | The July bar of generaltranslation.com and resend.com | verdicts.md, 2026-08-06 | gt-aesthetic section 1; BRAND.md section 8 |
| 2026-08-07 | Every crawler and agent may read the public site, and no rule blocks an AI crawler or a public page. Only the staging build disallows crawling. | None; a new standing rule | "make it so that all robots and agents can crawl us" | gt-cloud's apps/landing/src/app/robots.ts; gt-website section 7 and its review checklist |
| 2026-08-07 | A heading carries no trailing period. Body sentences keep theirs. The deck followed on 2026-09-08. | Landing section headings that ended in a period | "remove the periods from headers to standardize. our hero header has no periods"; on the deck: "i dont thinkn we need periods everywhere" | no-heading-period (gt-cloud #5007, Prototemplate pnpm lint:code); gt-voice, Headings and casing |
| 2026-08-08 | The staging build translates Spanish only. Production keeps the full locale roster. | Staging translating Japanese and Spanish | "only es for staging." | gt-cloud's apps/landing/staging.gt.config.json (["es"]) beside gt.config.json, run by scripts/deploy-landing.sh --staging; gt-website sections 3 and 8 |
| 2026-08-11 | For the gt-cloud redesign stack (landing, sign-in and dashboard), the production landing page is canonical. That page is gt-cloud #4213, built from the Dossier. Prototemplate and the toolchain lend isolated mechanics, assets and example copy, and the toolchain enterprise and pricing prototypes are the spec for those two pages. Product surfaces moved to the brand deck on 2026-09-25. | Copying the old toolchain page shell into new pages | "The production GT landing page is canonical." (a handoff brief he sent to the redesign sessions) | gt-aesthetic section 1; gt-landing-pages, The reference |
| 2026-08-11 | GT surfaces avoid mono as the brand voice, smooth scrolling, robot or sparkle AI icons, flag soup, AI gradients and glass, eyebrows, and em dashes in rendered text. | The July explorations' eyebrows, gradients, glass and mono labels | "3 lines of text stacked to say the same thing" (on eyebrows). verdicts.md, 2026-08-11 | no-eyebrow, no-em-dash, mono-is-not-voice, no-smooth-scroll, no-raw-locale-flags, icon-tiers; AI icons, gradients and glass by review (gt-brand section 7) |
| 2026-08-11 | No invented content. Copy, quotes, metrics, prices and product vignettes come from production, the benchmarks or GT's published pages. | Placeholder testimonials and invented enterprise vignettes | Kevin, 2026-08-05: "like these arent real quotes". verdicts.md, 2026-08-11 (round two) | gt-aesthetic review checklist; operating-principles.md rule 9 |
| 2026-08-12 | Once Kevin picks a variant, the alternatives leave the code and stay in git history. | The variants program's switchers and dock, about 16,000 lines | "get rid of the variation system" | verdicts.md, 2026-08-12; gt-aesthetic section 2 |
| 2026-08-14 | A landing button is the shared Cta component with a Title Case label, and its tracked value is one of the existing PostHog location slugs. A new slug needs Kevin's approval. | Buttons built by hand on each landing page | Decided in the landing button round (gt-cloud #4348) | gt-ui/shared-cta and gt-ui/cta-title-case; gt-landing-pages, gt-components |
| 2026-08-14 | Flags render only through the shared LocaleFlag SVGs, on every surface including the dashboard. | Emoji flags | "NO EMOJIS!!! USE OUR FLAGF BLIB RARY!!!" | no-raw-locale-flags on gt-cloud's dashboard, landing and packages/ui; packages/ui/src/components/ui/LocaleFlag.tsx; gt-components |
| 2026-08-15 | PR titles and bodies are lowercase, plain technical English, with no em dashes and no mention of Claude. Kevin repeated it on 2026-09-08. | Generated PR prose | "write up the prs with no reference to claude code and no emdashes in lower case"; 2026-09-08: "make the pr language in my standard technical english lower case" | gt-voice, Code comments, commits and PR descriptions; gt-ship section 4 and references/pr-body.md |
| 2026-08-17 | Every page gets a second pass against its reference before it is shown. | Pages shipped on their first pass (contact, sign-in, legal) | verdicts.md, 2026-08-17 | gt-aesthetic section 2; quality-bar.md |
| 2026-08-17 | A docs or blog URL never dead-ends. A near miss redirects to its page, a folder goes to its index, and an unmatched path lists the closest pages. | The plain 404 | "u should probably never hit a 404 on docs and blogs" | resolveDocsPath in gt-cloud's apps/landing/src/lib/slug-suggest.ts, and apps/landing/src/lib/blog-near-miss.ts (gt-cloud #4359, merged 2026-09-09); gt-website references/docs.md |
| 2026-08-26 | A docs page description opens with an action verb such as "Use" or "Install". Descriptions that open with "Learn how" or "Learn what" are rewritten. | Get Started captions that began "Learn how" | "learn is a terrible verb to start with, we like Use and install" | content:DOCS-SKILL.md (the rule for descriptions) |
| 2026-08-27 | Stacked PRs use GitHub's native stack, linked with gh stack link. Kevin reaffirmed it on 2026-10-05. | A Stacked on #N line in the body as the only link between PRs | "use the ACTUAL github stack feature"; 2026-10-05: "i meant use the actual pr stack feature" | gt-ship section 6 (github/gh-stack) |
| 2026-08-27 | gt-cloud commits carry Kevin's General Translation work identity. | Commits under his personal email, which gt-cloud's Vercel projects refuse to deploy | "gt-cloud deployments on vercel wiwll not accept my home email authored commits" | gt-cloud's repository user.email, which covers every worktree; gt-ship section 2 |
September 2026
| Date | Ruling | Replaced | Kevin's words | Held by |
|---|---|---|---|---|
| 2026-09-02 | Integration docs go under Integrations. A top-level docs section is reserved for a framework, plus the CLI and the Platform, and Integrations is the default when in doubt. | rrweb as a top-level docs section | "default to putting in the integrations section when in doubt" | content:DOCS-SKILL.md, "When something gets its own top-level section"; the top-level list is pinned in content CI by content:scripts/validate-docs-structure.ts (content #501) |
| 2026-09-03 | An unfinished dashboard feature ships behind a feature flag or does not ship. | Unfinished dashboard pages released without a gate | A team decision Kevin relayed with the fix request | The dashboard's feature flags, managed in the admin app (gt-cloud's gt-dashboard skill); glossary.md |
| 2026-09-08 | Review requests go through GitHub reviewer requests, and Kevin chooses the reviewers. | Asking for reviews in a Slack channel | "keep this in mind for all our prs nnow, i connected everything in linear properly" | gt-ship section 5, Reviewers |
| 2026-09-08 | Writing is plain technical English: no em dashes, metaphors, contrast pairs, fragment rhythm or signposts. | Agent prose with metaphors and parallel constructions | "do it in stragiht standard technical english without any weird metaphoors" | gt-voice; no-em-dash; the humanizer skill in Kevin's wiki |
| 2026-09-09 | The brand review works from first principles. Only the company's legal name and the gt-* library names customers install are fixed. | None; the brief for the brand review | "just a few things that cant change (the legal name of the company, general translation, annd the nname of libraries our customers use" | No gate; the fixed names are defined in BRAND.md section 1 and gt-brand section 1 |
| 2026-09-10 | Pricing shows whole-dollar amounts of $1 or more without cents. Cent prices and amounts under a dollar keep two decimals. | Two decimals on every price | "turn $2.00 and $1.00 and anything like this to $2 and $1" | gt-cloud's packages/ui/src/components/pricing/dollar-format.ts and apps/landing/__tests__/usage-dollar-format.test.ts (gt-cloud #4785) |
| 2026-09-10 | Public writing is written for a reader who knows nothing about Kevin, the team or the repository. It defines the product once, opens each section with the point that reader can reuse, and keeps PR numbers and internal names out of the prose. | Drafts that narrated process and cited internal names | "be so much more straightforward and clear to a user who has no idea who I am" | gt-voice; quality-bar.md, Copy |
| 2026-09-10 | The docs sidebar on a 404 page is the stock flat tree. | A client-side pathname override that kept the section tree and flashed the flat tree before hydration | "i cann see it flash. should we just have what it is before if its what fuma nama does?" | gt-cloud #4773 (the revert); gt-website section 4 |
| 2026-09-14 | Exploration rounds stay on a branch or uncommitted until Kevin reviews them on localhost and says to land them. The directions in a round differ in silhouette, material and action. | A ten-direction round pushed to Prototemplate main before he saw it | verdicts.md, 2026-09-14 | prototemplate section 9; gt-ship section 8; gt-explorations |
| 2026-09-15 | Git pushes trigger no landing preview deploys. Main and staging deploy, and a preview is deployed by hand from the CLI. | A preview deploy on every push to a PR branch | "this is running up a lot of costs" | gt-cloud's apps/landing/vercel.json (git.deploymentEnabled), gt-cloud #4828; gt-website section 8 |
| 2026-09-15 | PostHog loading and analytics initialization stay as they are in any PR that is not about analytics. | A PR that deferred PostHog initialization in packages/ui/src/components/analytics/PostHogProvider.tsx | "dont touch posthog. evaluate your chnages for stuff that is high risk like posthog" | gt-website section 4; for onboarding, the parity gate in gt-ship section 7 |
| 2026-09-18 | Inter is the only typeface. gt-brand section 4 names the few exceptions, such as the Prototemplate nameplate and the presenter. | Switzer as the display face beside Inter (the deck dropped it on 2026-09-08) | verdicts.md, 2026-09-18 | inter-only; gt-cloud #4887 deleted the Switzer files; gt-brand section 4 |
| 2026-09-24 | Icons come in two tiers: Heroicons solid for marks that carry meaning, Lucide outline for controls. Brand marks stay as drawn. | Lucide outline glyphs everywhere | Kevin, 2026-09-28: "look for ANYWHERE ELSE icons nneed to be synced" | icon-tiers (the rule in gt-cloud #4909, the lint in #5007); gt-components references/icons.md |
| 2026-09-24 | The identity stays in the neutral, scalable territory: a grid, one type system, one accent blue, and parts that hold at 16px and in a terminal. | A more opinionated creative territory proposed in the brand review | "need to be scalable in future. not incredibly opinionated. feel like switzerland" | BRAND.md; gt-brand sections 2 and 3; no gate |
| 2026-09-25 | Prototemplate reserves all rights to General Translation, Inc. The repository is public to read, and third-party fonts, icons and adapted skills keep their own licenses. | The MIT license | "make prototemplate not mit licensed anymore." | LICENSE; README, License |
| 2026-09-25 | A coding agent runs the Setup for Agents prompt end to end on a fresh app before it ships, and again after any change to the prompt, the CLI or the quickstarts. | Shipping a generated prompt untested | "TRY IT OUT SEE IF IT WORKS AND YOU CAN GET TO CREATING A TRANSLATION". He asked again on 2026-09-30 and 2026-10-01. | gt-website section 6 and references/pages.md |
| 2026-09-25 | PR screenshots go into the body from the first push and are refreshed after every visible change. | Screenshots added at the end of review | "add the screenshots of this to the pr the whole time" | gt-ship section 4 |
| 2026-09-28 | Each column has one rail on each side, drawn once by the .tc-rail wrapper. | Doubled outer rails 10px outside each column | "make sure theres nno rules that leead to two side rails" | single-rail (gt-cloud #5007, Prototemplate pnpm lint:code); retired-rail-vocabulary in Prototemplate's scripts/lint/practices.mjs; DESIGN.md section 3 |
| 2026-09-28 | The theme control draws the circle glyphs ◐ and ◑. | Sun and moon icons | verdicts.md, 2026-09-28 | The shared ThemeToggle in gt-cloud's packages/ui/src/components/frame/ThemeToggle.tsx; no-theme-icons on open gt-cloud #4977, which has not reached main |
| 2026-09-28 | PR screenshots are tight before and after crops of the changed elements, with the same clip on main and on the branch. | Full-page screenshots in two-column tables | "make this pr page much much easier to read and show the images" | gt-ship section 4 and references/pr-body.md |
| 2026-09-29 | No offer, credit or capability appears in the product before the backend delivers it. | An offer in the redesigned onboarding that the backend did not yet deliver | "we only show it if we actually do it" | The parity gate admits only stricter checks and recovery paths as additions (gt-ship section 7); review |
| 2026-09-30 | The hero's second button is Setup for Agents, which copies the tested agent prompt. | A Docs button | "change docs into setup for agents with a copy icon and make that into its own pr" | HeroSecondButton.tsx and CopyPromptButton.tsx in gt-cloud's apps/landing/src/components/landing/sections/agent/; the prompt's one source in content:docs/en-US/overview/for-coding-agents.mdx, served at /agent-prompt.md (gt-cloud #5049); gt-website section 6 |
October 2026
| Date | Ruling | Replaced | Kevin's words | Held by |
|---|---|---|---|---|
| 2026-10-01 | GT's identity work takes dithered artifact pictures in black, white and blue as a reference. Kevin sent them to the brand agency with the race-type speed marks he chose on 2026-09-29, and he called the marks an experiment. The doubled-line monogram stays the current mark. | None; it builds on the 2026-09-24 territory | "artifacts, dithered, we like this aeshteitc of black white blue"; on the marks: "nothing but funnu experiementation" | gt-dither (the pictures); scripts/build/speed-marks.mjs and /marks in Prototemplate; gt-brand section 5 |
| 2026-10-01 | A release PR carries no development code. Galleries, stand-ins, test-only hooks, dev routes, recorded fixtures and harnesses stay on their own branch or in the scratchpad. | A release branch that carried the dev states gallery and a 24k-line parity suite | "please cleanup / remove all dev / temporary 'testing' code" | gt-ship section 3, Verification instruments stay out, and skills/gt-ship/scripts/pr-size.mjs |
| 2026-10-02 | An onboarding or auth redesign keeps every tracking call and backend side effect that production has. Parity is proven by recording production, replaying the release and diffing the two ledgers. | Judging parity from a reviewer's list of intended changes | "we need the new onboarding to keep all the tracking and backend stuff that the old onboarding did" | gt-ship section 7, The parity gate |
| 2026-10-02 | A PR's line count is part of its review. Before a push the diff is grouped into product, tests, fixtures, scripts and lockfile, and every large group has a reason. | A release PR of about 39,500 lines, most of them a recorded parity suite | "why is 5063 39.5k lines? fix this." | skills/gt-ship/scripts/pr-size.mjs; gt-ship section 3 |
| 2026-10-02 | A public repository with a third-party licensing problem stays public, and the third-party material is removed or replaced. Kevin ruled this in one of his own repositories, and it applies to Prototemplate. | Making a repository private to settle third-party terms | "never privatize the repo. simply remove third party models." | Review; each picture's source and license are confirmed when it is added (gt-dither sections 5 and 7); LICENSE lists Prototemplate's third-party material |
| 2026-10-02 | A PR is closed only when its change is already on main. The closing comment names the merged PR that carries the change, and the branch stays. Every other PR stays open for Kevin to decide. | Closing stale and superseded PRs in bulk | "only delete prs that are already in the codebase" | gt-reporting section 5 (close candidates in the PR slate); the closing comment is the check |
| 2026-10-03 | Each session owns one lane, and work for another lane goes to that session by name. | Sessions doing each other's work, such as a site session making films | "that videos one should be making them, and this one is just for prototemplate work" | gt-ship section 1; prototemplate section 8; multi-session-playbook.md |
| 2026-10-03 | Content about places is organized by language. It names and outlines no country or territory, and its facts come from CLDR. | A brief for a map of countries drawn in their languages | "avoid political sensitivity without making it look forced" | gt-website section 6; gt-product-map.md section 6, Geography |
| 2026-10-05 | Prototemplate is the hub and wiki of how GT work is done, with a curated skill set in skills/<slug>/ that holds only the skills in real use. | A generated dump of 261 wiki skills on /skills | "this prototemplate is tupposed to be my hub for general trnalsation work"; on /skills: "we only need to show and store the ones weve actually been using" | prototemplate section 10; /skills renders only the set |
| 2026-10-05 | Every element resolves through the type tokens to one face, the self-hosted rsms InterVariable 4.1. | Faces set differently from element to element, and Google's build of Inter | "esepcially encorce the CORRECT RASMUS INTER". verdicts.md, 2026-10-05 | inter-only in gt-cloud; pnpm lint:type in Prototemplate (scripts/lint/type.mjs, from the 2026-10-05 type round); gt-brand section 4 |
| 2026-10-05 | Artifact pictures carry no readable English prose. | The dictionary, Johnson, OED and Oxford pictures | verdicts.md, 2026-10-05 | pnpm lint:pictures and docs/ARTIFACT-PICTURES.md in Prototemplate; check:artifact-pictures on open gt-cloud #5133; gt-dither |
| 2026-10-05 | A book head's title is the page's plain name (Brand, Documentation, Handbook), and the head's right side is a panel: the last update, then the page's own facts, each with an icon. | Titles that were phrases ("The brand", "Prototemplate docs") beside a plain meta table | "dont make it "the brand" "prototemplate docs" it should be Brand and Documentation and make the right side of those headers better, show last update, use icons" | src/lib/page-names.ts; pnpm lint:heads (S1, S5, H5) and pnpm lint:updated; prototemplate section 3 |
| 2026-10-05 | Rounded controls, square shells: buttons, fields and segmented controls round at 6px, chips and key caps at 4px, cards and popovers at 6px, and only the UI shells are square. | Square boxes everywhere outside a short list of exceptions | "i want to enforce and keep this amount of border rounding instead of forcing Boxes. boxes only for ui shells" | pnpm lint:radius (scripts/lint/radius.mjs); DESIGN.md section 2, Corners; gt-aesthetic section 3 |
| 2026-10-06 | Every page with a book head renders one structure: nothing is drawn between the sheet's top border and the title, one hatch band carries a rule on both edges, and the mast, the panel and the section dividers are the same on every page. | Heads that differed from page to page, a guide line through the title, and a band without its top rule | "see how the brand is touching the up line and the spacer is missing a border above it? standardize our presentation more" | pnpm lint:heads and pnpm lint:heads:live; DESIGN.md section 4, The book page; verdicts.md, 2026-10-06 |
| 2026-10-06 | The brand's head shows a reading time like the other pages and names no reference application. The brand has moved past the Dossier, and BRAND.md section 8 ("The completed reference") waits for Kevin's decision. | The Dossier as the brand's completed reference (the 2026-08-06 row) | "why is the dossier the reference for Brand? its evolved so much more since then", then "just give it a reading time like the other pages." | /brand's panel; verdicts.md, 2026-10-06; no gate |
| 2026-10-06 | Simplify. The platform feature that removes code comes before new code, and machinery a review asks to test is removed when it need not exist. | A caption card that measured its own height with an observer and component state | "Beautiful but don't complicate. Always simplify." | operating-principles.md rule 12; gt-aesthetic |
| 2026-10-07 | The shipped site is the reference for landing and marketing pages: generaltranslation.com, built from apps/landing on gt-cloud origin/main. The Dossier stays in the gallery as the direction the site grew from. BRAND.md section 8 ("Where it ships") names where the identity ships: the site, the product surfaces that follow the brand deck, the films on /motion and the marks. | The Dossier as the completed reference for the site (the 2026-08-06 row), and the decision on BRAND.md section 8 that the 2026-10-06 row left open | "fix the dossier references." | gt-aesthetic section 1; verdicts.md, 2026-10-07; BRAND.md section 8; no gate |
| 2026-10-07 | A skill's title and a document's h1 name the thing with no leading "The": Brand and the correct Inter, Brand deck, Landing page grammar and GT website for the skills, and Graphics pipeline, Libraries and Ship loop for the documents. | Titles that opened with "The" ("The brand deck", "The Ship Loop") | "fix the The titles." | scripts/build/skills.mjs fails a skill title that opens with "The" and a skill whose h1 differs from its metadata.title; review holds the documents' h1s; the 2026-10-05 row on head titles |
| 2026-10-07 | Prototemplate is served at three addresses: www.prototemplate.com from the team's Vercel project, and prototemplate.vercel.app and prototemplate.kevinliu.studio from Kevin's personal project. On 2026-10-07 prototemplate.kevinliu.studio served the same deployment as prototemplate.vercel.app. | www.prototemplate.com as the one live domain, with prototemplate.vercel.app as the personal project's alias | "prototemplate.com and vercel.app are both ok, but prototemplate.kevinliu.studio shoul dbe a thing too." | README.md, What is here; gt-ship section 8 |
| 2026-10-07 | The film cuts in review are approved for the site. jihe-yuanben is published under CC BY-SA 4.0, and its credits file says so. Kevin signed off the last open items, the non-English takes that waited for a native listener, and expects those films to be updated. | Cuts held for Kevin's approval, the share-alike license of jihe-yuanben left to his decision, and non-English takes held for a native listener | "film cuts approved. jihe is yes. and the last ones are signed off, theyre going to be updated anyways" | gt-films sections 7, 8 and 11; public/motion/published.json |
| 2026-10-08 | On a page that already exists, "enhance" keeps the page and adds to it. Copy beside a team photo names nobody in it and states no headcount. | A careers rebuild that dropped the hero, the customer band and the original copy | "keep the original write up" | operating-principles.md rule 15; quality-bar.md, Copy; gt-aesthetic |
| 2026-10-10 | Prototemplate commits author as Kevin with his GitHub noreply address and keep the session's Co-Authored-By: trailer. | Commits under his personal or his work address | Answered in the review of the system v2 plan | docs/SHIP-LOOP.md section 6; gt-ship section 2 |
| 2026-10-10 | www.prototemplate.com is the canonical address. prototemplate.vercel.app and prototemplate.kevinliu.studio stay as aliases. | prototemplate.vercel.app as the address in the site metadata and llms.txt | The recommended default, accepted in the same review | SITE_URL and public/llms.txt; README.md, What is here |
| 2026-10-10 | A customer or partner is named in this repository only where generaltranslation.com shows it. | A list in BRAND.md section 9 that named a customer the site no longer showed | The recommended default, accepted in the same review | BRAND.md section 9; pnpm lint:public and its private denylist |
| 2026-10-10 | gt-cloud's internal material stays out of the public skills: its dev-environment internals and the file maps of its private packages live in gt-cloud's own skills. PR numbers and branch names may appear. The copies of the gt-ui lint plugin and the plate stay at the copy taken, with no re-sync until gt-cloud's product and infrastructure owners agree. | Skill sections that described gt-cloud's dev infrastructure and package file maps | The recommended default, accepted in the same review | pnpm lint:public; scripts/lint/copies.json; prototemplate |
| 2026-10-10 | The curated skills reach gt-cloud sessions as project links made by pnpm skills:install --project on a gt-cloud checkout and listed in that checkout's .git/info/exclude, so nothing gt-cloud tracks changes. | Skills that no gt-cloud session loaded | Answered in the same review | README.md, Skills |
| 2026-10-10 | The film sources in motion/ are tracked through an allowlist: the kit code and one entry per published film. Unreleased films stay untracked, and Kevin reads the first staged diff. | motion/ untracked as a whole | Answered in the same review | The motion block in .gitignore; gt-films |
| 2026-10-10 | Finished round specs move to docs/archive/, with machine paths replaced by placeholders. | Finished and abandoned specs kept beside the live sources | The recommended default, accepted in the same review | docs/archive/README.md; pnpm lint:public |
| 2026-10-14 | /docs is a docs site of ten pages on how Prototemplate works, built on fumadocs with the notebook layout generaltranslation.com/docs runs, outside the viewer shell, and written to serve as a template for another project. The canon documents (AGENTS.md, BRAND.md, DESIGN.md, ARCHITECTURE.md, the ship loop, the tools, the libraries with the build log, the graphics pipeline and the artifact pictures) joined the handbook at /handbook/<slug>, and their old /docs/<slug> addresses redirect there. | /docs as a book of the repository documents on the viewer shell, with the build log under the readme | "i want prototemplate to have its own proper seo system we can also make a very small like 10 page version of the docs site that just explains how it works and totally serves as a template" | content/docs, src/app/docs, src/app/handbook/registry.ts, the redirects in next.config.ts; pnpm lint:registries, pnpm lint:seo |
| 2026-10-20 | The handbook and the canon documents are a section of the docs site at /docs/handbook/<slug>. Each page includes its repository file, so docs/handbook/ and the canon files stay the one source, and /handbook and /handbook/<slug> redirect to the new addresses. The libraries page carries the live build log, and pages set live figures beside the sections they illustrate. | The handbook as a book on the viewer shell at /handbook/<slug> (the 2026-10-14 row) | "put the handbook into prototennokate docs, with a ton more super cool componnents in there now" | content/docs/handbook/; the redirects in next.config.ts; pnpm lint:registries, pnpm lint:seo |
Superseded July practices
Notes, commits and transcripts from July 2026 still describe these practices, and no row above names them. The Replaced column of the tables above covers the other July practices: Lenis, headings with periods, Switzer and the July bar.
| July practice | Replaced by | Date | Held by |
|---|---|---|---|
| Entrance animation, such as a fade-in on the landing hero | Kevin, 2026-08-06: "dont have a fade in animation in hero". Product pages have no entrance animation since 2026-09-28. The landing's sections keep one quiet reveal as they scroll into view, and other motion shows a real state change. | 2026-08-06; product pages 2026-09-28 | gt-motion section 1 and section 6, The landing's quiet reveal |
| Liquid glass and glassmorphism. Kevin, 2026-07-30: "MAKE THIS HAVE A BACKGROUND WINDOW DISTORTION GLASSMORPHISM" | The avoid list refuses the AI gradient and glass look. | 2026-08-11 | Review (gt-brand section 7) |
| DirectionDock, the control dock on every direction page. Kevin, 2026-07-30: "remove this thing on each page. this is a /present specific feature" | One pill took over the presenter's controls and DirectionDock was retired (Prototemplate 502dc0a). It returned the same night as a top-left back button on the standalone direction pages, hidden under ?chrome=0 (08b33c6). On 2026-09-08 DirectionCorner (src/components/viewer/DirectionCorner.tsx) replaced it on the viewer shell, and DirectionDock was deleted (c064945). | 2026-07-31; 2026-09-08 | gt-components, Prototemplate's viewer shell; prototemplate section 1 |
gt-cloud's apps/redesign on port 3006 as the place where canon was edited | Prototemplate main is the only copy, and canon is edited there. apps/redesign stopped being a copy, nothing is copied in from another tree, and Prototemplate's dev server runs on 3005. | 2026-09-08 | ARCHITECTURE.md, The mirror; docs/SHIP-LOOP.md section 7; prototemplate section 1 |
Recorded elsewhere
- Version pins, ports, open PR states and other temporary technical states describe the code on a date and change without a ruling. They live in gt-website section 8 and the Sources lines of the skills. The landing's Next.js pin is one of them.
- The full wording of each design verdict, with what was wrong and what Kevin approved, is in verdicts.md. The table in gt-aesthetic section 2 summarizes it.
- The Sources lines of
gt-voice,gt-website,gt-shipandgt-lintslist the directives each skill was written from. This log puts every ruling in one dated list with the practice it replaced.
Sources
- Kevin's messages to Claude Code and Codex from 2026-07-20 to 2026-10-05, about 5,800 in all; his rulings on the page heads, the corners and the brand's reference on 2026-10-05 and 2026-10-06, and on the Dossier references, the titles, the addresses and the films on 2026-10-07; and the session transcripts behind them for context. Quotes keep his spelling. Three quotes come from messages the corpus cut short or queued with an image, and were read in the transcripts: the 2026-08-11 eyebrow line, the 2026-09-25 screenshot line and the 2026-09-30 hero line.
- Prototemplate, read 2026-10-05:
skills/gt-aesthetic/references/verdicts.mdandSKILL.mdsections 1 and 2;skills/gt-shipsections 1 to 8,references/pr-body.mdandscripts/pr-size.mjs;skills/gt-lintsandreferences/gt-ui-rules.md;skills/gt-websitesections 3 to 8 andreferences/docs.mdandreferences/pages.md;skills/gt-voice, Headings and casing;skills/gt-brandsections 1 to 5 and 7;skills/gt-components;skills/gt-motionsections 1 and 6;skills/gt-dithersections 5 and 7;skills/gt-landing-pages;skills/gt-reportingsection 5;skills/prototemplatesections 1 and 8 to 10;BRAND.md;DESIGN.mdsection 3;ARCHITECTURE.md, The mirror;LICENSE;README.md;docs/ARTIFACT-PICTURES.md;package.json;.oxlintrc.json;scripts/lint/practices.mjs;scripts/lint/type.mjsin the working tree; commits 502dc0a and 08b33c6 (2026-07-31 Pacific), 229d413 and c064945 (2026-09-08). - gt-cloud at origin/main e17fce499 (2026-10-05):
.oxlintrc.jsonandtooling/oxlint-plugins/gt-ui.ts,apps/landing/src/app/robots.ts,apps/landing/vercel.json,apps/landing/gt.config.json,apps/landing/staging.gt.config.json,scripts/deploy-landing.shandpackages/ui/src/components/pricing/dollar-format.ts; merged PRs #4213, #4359, #4773, #4785, #4828, #4887, #4909, #5007 and #5049; open PRs #4977 and #5133. - generaltranslation/content at main, read 2026-10-05:
DOCS-SKILL.md("When something gets its own top-level section" and the rule for descriptions); PR #501. - Kevin's wiki: the humanizer skill.
- Kevin's Claude Code memory notes for gt-cloud, which stay private (25 notes; 5 added on 2026-10-10 from an allowlist of standing rulings, each row written fresh).
- The review of the system v2 plan on 2026-10-10: Kevin's answers and the recommended defaults he accepted, for the 2026-10-10 rows.
- Kevin's request of 2026-10-14 for the SEO system and the docs site, and his answers to the plan's open questions that day, for the 2026-10-14 row.
- Kevin's request of 2026-10-20 to move the handbook into the docs site with live components, for the 2026-10-20 row.
Multi-session playbook
How many agent sessions share one machine: lanes, forked sessions, shared checkouts, collisions, Claude and Codex on one main, and resumption.
Agents on one machine
Agent sessions on one workstation: stopping processes by id, zsh traps, exit-status gates, memory and disk, long commands and shared checkouts.