Skip to content

feat(course): deploy course 12 Vibecoding from zero, 27 static widget pages written by t27 specs - #1808

Draft
gHashTag wants to merge 14 commits into
mainfrom
feat/course-vibecoding-deploy
Draft

gHashTag wants to merge 14 commits into
mainfrom
feat/course-vibecoding-deploy

Conversation

@gHashTag

Copy link
Copy Markdown
Collaborator

Deploys course 12, "Vibecoding from zero" (9 modules x 3 lessons, route #/vibecoding), to t27.ai. Refs #1807.

How the 27 widgets ship (FR-106). Each widget is a static page with no script: every state is one <section> of one HTML page, a link is a fragment, the CSS :target selector shows the section the address names. A spec pub fn page_<id> writes the whole page through the vendored html_out writer and the shared page_kit frame; t27c gen-text --fn (t27 revision 06522649, the merge of t27#13568) compiles the spec on Actions and writes the bytes to apps/website/public/widgets/<id>/index.html. No page is typed by hand. The eight stateful widgets (four phases, the loop, message loop, plant a bug, read a diff, secrets out, unstuck, test judge) are written out as finite-state machines with a cap on their states; the other 19 are infographics.

This PR

  • specs/widgets/views/: page_kit.t27 (frame), view_pages.t27 (the 27 ids), 27 view specs, the vendored html_out.t27.
  • .github/workflows/emit-widget-pages.yml: builds t27c at the pinned revision, tests every view, emits the 27 pages, uploads them as an artifact, and fails when a page did not emit or a committed page differs from the emitted one.
  • the committed pages, the gallery entries, the course catalog, the lessons and share pages, and the EN and RU blog post.

Foreign-language label: the workflow YAML is plumbing around t27c (one tool call per line), so this PR carries owner-approved-foreign.

{
  "version": 1,
  "head_sha": "881287f2b2fb2215e68077ee318c918a5f2f5baa",
  "summary": "Work in progress: the shared page frame, the list of the 27 widget pages, two template views and the Actions workflow that emits the pages with t27c gen-text. The other 25 views are still being rewritten.",
  "changes": [
    "apps/website/specs/widgets/views/page_kit.t27: the frame every static widget page shares, with the CSS :target switch",
    "apps/website/specs/widgets/views/vc-the-loop.t27 and vc-key-pair.t27: the two template views, one stateful and one infographic",
    ".github/workflows/emit-widget-pages.yml: builds t27c at the pinned revision and emits the pages"
  ],
  "tests": [
    {
      "command": "t27c test-report on every view spec (Actions, emit-widget-pages)",
      "status": "not_run",
      "result": "Not run yet: the first round on Actions is the proof of the templates.",
      "evidence": "The run of emit-widget-pages on this pull request."
    }
  ],
  "limitations": [
    "Draft: 25 of the 27 views are still in the old form and the pages are not committed yet."
  ],
  "tags": ["t27", "vibecoding", "course"],
  "blog": {
    "title": "Twenty-seven widgets with no script, written by specs",
    "summary": "The vibecoding course ships its 27 widgets as static pages that a t27 spec writes, with the CSS target selector standing in for every click.",
    "outline": [
      "Each widget state is one section of one page, a link is a fragment, and the CSS target selector shows the section the address names, so no script is needed.",
      "A spec function fills a buffer with the whole page through a small writer and a shared frame, and the compiler emits the bytes to the path the site serves.",
      "The eight widgets with state are written out as finite-state machines with a cap, so the loop widget is 92 sections and about 90 kilobytes of plain text."
    ]
  }
}

🤖 Generated with Claude Code

gHashTag and others added 14 commits November 10, 2026 17:30
The plan is a t27 module with tests: 9 modules of 3 lessons cut from The
Vibecoder's Bible, one vc-* widget and one lesson spec per lesson. It carries no
market figure or income claim from the book.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…widgets, EN and RU fragments

Модуль own курса vibecoding: 3 спецификации уроков, 3 виджета, фрагменты EN и RU.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Vibecoding course module 2 "Your desk": three lesson specs, three widget specs and the English and Russian text fragments.

Модуль 2 курса вайбкодинга "Ваш стол": три спеки уроков, три спеки виджетов и текстовые фрагменты на английском и русском.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ments

Module Save points with git of the vibecoding course: a commit is a save point, a branch is a safe try, a key is a pair.

Русский перевод: модуль «Точки сохранения в git» курса по вайбкодингу: три спецификации уроков, три виджета, фрагменты на английском и русском.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…idgets, EN/RU fragments

Lesson specs (describe-run-check, steps in order, five myths), widget specs vc-describe-run-check, vc-steps-in-order, vc-myth-tests, and the EN and RU text fragments for the assembly step.

Модуль 1 курса по вайбкодингу: три спека уроков, три спека виджетов и тексты EN и RU для сборки.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…specs, EN and RU fragments

Lessons: parts of a prompt, an example beats an adjective, one small step. Each lesson spec has tests and a planted-bug control.

Русский перевод: модуль words (промпты) курса вайбкодинга: три спецификации уроков, три спецификации виджетов, фрагменты текстов на английском и русском. У каждого урока есть тесты и контроль с подложенной ошибкой.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…RU fragments

Модуль judge курса вайбкодинга: три спецификации уроков, три виджета, тексты на английском и русском.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… specs, EN and RU fragments

Lessons four-phases, ask-run-read-fix and when-you-are-stuck: lesson specs with tests, widget specs, and the lesson texts in loop.t27 and loop-ru.t27.

Модуль loop курса vibecoding: спеки уроков с тестами, спеки виджетов и тексты уроков на английском и русском.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Three lesson specs, three widget specs and the EN/RU text fragments for
agent_mind, agent_hands and agent_memory; each lesson spec has a negative control.

Модуль 7 курса по вайбкодингу, части агента: три спецификации уроков, три
спецификации виджетов и тексты EN/RU; в каждой спецификации урока есть
отрицательный контроль.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Three lesson specs, three widget specs, EN and RU fragments.

Модуль 8 курса Vibecoding from zero, «Первый бот»: три спецификации уроков, три виджета, тексты EN и RU.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Nine module branches, 8 new t27 files each (3 lesson specs, 3 widgets, EN and RU
text fragments); no path is shared between them.

Девять веток модулей курса по вайбкодингу: по 8 новых файлов t27 в каждой (3 урока,
3 виджета, тексты EN и RU), общих путей нет.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…, 27 gallery entries, vendored lessons (parked)

Черновик: курс вайбкодинга 12, спецификации, русский пакет, каталог из 12 курсов, 27 записей галереи, скопированные уроки; PR отложен до tool.js и карточек.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Простые формулировки в курсе вайбкодинга, английский и русский синхронно.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… emit workflow

The 27 vc-* widgets move to specs/widgets/views/ and become static pages (FR-106,
#1807): every state is one section of one HTML page, switched by the
CSS :target selector, with no script. A spec pub fn writes the page through the
vendored html_out writer and the new page_kit frame; t27c gen-text --fn emits it on
Actions (emit-widget-pages.yml), pinned at the t27 revision that has --fn.

This commit has the frame (page_kit), the list (view_pages), the two template views
(vc-the-loop, stateful, 92 sections; vc-key-pair, infographic) and the workflow. The
other 25 views are still in the old form and are rewritten next.

Русский перевод.

27 виджетов vc-* переезжают в specs/widgets/views/ и становятся статическими
страницами (FR-106, #1807): каждое состояние - одна секция одной
HTML-страницы, переключается CSS-селектором :target, без скрипта. Функция спеки
пишет страницу через vendored html_out и новую раму page_kit; t27c gen-text --fn
выпускает её на Actions (emit-widget-pages.yml), закреплено на ревизии t27 с --fn.

В коммите: рама (page_kit), список (view_pages), два образцовых вида (vc-the-loop -
с состояниями, 92 секции; vc-key-pair - инфографика) и workflow. Остальные 25 видов
пока в старой форме, их переписываем следом.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@gHashTag gHashTag added the owner-approved-foreign Owner approved hand-written non-t27 code in this PR label Nov 12, 2026
@github-actions github-actions Bot added the status:in-progress 🔵 Agent working label Nov 12, 2026
@github-actions

Copy link
Copy Markdown
Contributor

X Brain Health Check

Score: 100.0/100
Status: 🟢 HEALTHY
Threshold: 80/100

X Brain is above merge threshold

@github-actions

Copy link
Copy Markdown
Contributor

🧪 Brain Stress Test Results

Tests: 261/261 passed, 0 leaked
Status: 🟢 PASS
Gate: every test in zig build test-brain-stress passes and none leaks

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

owner-approved-foreign Owner approved hand-written non-t27 code in this PR status:in-progress 🔵 Agent working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant