Archive self-play beans, update shader/LLM parent beans to completed,
and add self-play chapter content to ml-self-play.md.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The Markov epic (edu-svom) incorrectly used blocked-by relationships to
reference its 10 section tasks. Replaced with proper parent-child
hierarchy: removed blocked-by entries from the epic and set parent on
each section task.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds llm-from-scratch.md stub with 14 sections (GPT-1 style: character
tokenisation, self-attention, transformer block, candle model, training
loop, sampling). Creates beans edu-32xl through edu-9sb7 for each section.
Add edu/src/ml-self-play.md with 14 stubbed sections across 5 parts:
foundations (RL, MCTS, self-play), game engine (Tic-Tac-Toe), MCTS
implementation, neural network integration, and the full self-play loop.
Create one beans ticket per section (edu-wobk through edu-brtk).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add shaders.md with 18 stub sections across 6 parts (GPU model,
wgpu setup, vertex/fragment shaders, textures, compute shaders,
going further). Create beans tickets edu-5g0l through edu-7m8d
for each section. Add # Graphics section to SUMMARY.md.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Simplify all issue-tracking documentation to defer to `beans prime`
rather than maintaining a parallel description of beans commands.
- CLAUDE.md: collapse task-tracking section to just `beans prime` callout
- edu/.claude/skills/work: nbd next → beans list --ready
- nbd/.claude/skills/work: nbd next → beans list --ready
- nbd/.claude/skills/triage: nbd tickets/.nbd → beans beans/.beans
- nbd/src/claude_md_snippet.md: replace nbd snippet with beans prime stub
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds src/introduction.md explaining the project (LLM-generated learning
resources, Claude Code + Opus 4.6/Sonnet 4.6, CC0 public domain, contact
email) and links it as the first entry in SUMMARY.md.
- OpenTofu config in infra/ for Pages project, DNS CNAME, and custom
domain at vibebooks.elijah.run
- justfile with build, serve, deploy, infra-init, infra-plan, infra-apply
targets
Closes 59c122
Fill in every stub section with full educational content covering
foundations, parsing with nom, semantic analysis, code generation,
and integration testing. Close all associated nbd tickets.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Root TODO.md:
- 82df74: Add justfiles for all projects (lint/check/build/release)
- 09cda0: Add contact footer to all service front-ends
nbd/TODO.md:
- 39b2cf: Add --xml output format to nbd
edu/TODO.md:
- 59c122: Deploy edu mdbook to Cloudflare Pages (vibebooks.elijah.run)
- 8618e4: Write chapter on co-op worker-owned business structure
- 8f14c6: Write Machine Learning chapter (self-play game AI)
- 389d8d: Write chapter on creating and training a simple LLM
- 0fbe1a: Write chapter on shader programming
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add working-directory rule to root and all project docs
- Generalize root from "HTTP web services" to "independent projects"
- Add @../CLAUDE.md inheritance to nbd, edu, quotesdb project docs
- Remove sections duplicated from root in project-level docs
- Wrap all sections in semantic XML tags for clearer agent parsing
- Rename Tech Stack → Common Patterns (framed as defaults, not requirements)
- Rename Running Services Locally → Running Projects Locally
18-section interactive course teaching compiler construction in Rust
using nom. Covers MiniLisp parsing, AST design, semantic analysis,
and C code generation. All sections stubbed; one nbd task ticket per
section plus a project ticket (67e284) tracking completion.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replaces the stub in Section 2 with full prose covering:
- State space definition (finite vs countably infinite)
- Transitions as directed, probability-labelled edges
- ASCII state-transition diagram for the weather model
- Absorbing, transient, and recurrent state classification
Full Exercise 3 — Bigram Text Generator section replacing the stub:
- Setup instructions (cargo new, cargo add rand)
- Starter code skeleton with BigramModel struct
- Step 1: tokenize corpus with split_whitespace + to_lowercase
- Step 2: build transition table via windows(2) with count tracking
- Step 3: integer weighted sampling helper (sample_weighted)
- Step 4: generate implementation with dead-end handling
- Step 5: run the generator with the Alice corpus and seeded RNG
- Step 6: guidance for trying a larger Project Gutenberg corpus
- Full reference solution in a collapsible details block
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace stub with full prose covering the stationary equation,
long-run frequency interpretation, irreducibility and aperiodicity,
a worked 2×2 analytical solution for the weather chain, and a power
iteration pseudocode + Rust sketch.
Replaces the stub with full lesson content:
- Defines the transition matrix P[i][j] and stochastic matrix constraints
- Derives multi-step probabilities via π_k = π₀ · P^k
- Works through the 2-state weather chain by hand (1- and 2-step calculations)
- Bridges to §9 stationary distributions
- Words as states paragraph
- Bigrams and transition tables explanation
- Worked bigram example with two-sentence corpus and transition table
- Why generated text sounds locally plausible but globally incoherent
- Order-n chains and the coherence/novelty tradeoff
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>