Skip to content

spec(t27f): first real reel -- the t27 basics course as a 27-cell map (Closes #9996) - #9997

Merged
gHashTag merged 1 commit into
masterfrom
t27f/reel-t27-basics
Oct 17, 2026
Merged

gHashTag merged 1 commit into
masterfrom
t27f/reel-t27-basics

Conversation

@gHashTag

Copy link
Copy Markdown
Owner

Closes #9996
Refs gHashTag/trinity#1677

What

specs/t27f/reel_t27_basics.t27: the first real T27F reel. One topic, the t27 basics course (gHashTag/trinity apps/website/specs/course/t27-basics.t27 at ee51235), drawn with the reel camera (reel.t27) and the deck look (deck.t27).

  • 27 cells = 27 lessons, in course order; labels "1".."27". Each reel row (lens) is three whole course modules: lessons 1-9, 10-18, 19-27 (lenses_are_whole_modules).
  • Status is earned, not chosen (a_status_is_earned_not_chosen): a cell is published only when its lesson page is live AND its lesson spec passes; verified when only the spec passes; draft otherwise. Measured 2026-10-17: all 27 pages at t27.ai/learn/<id>/ return 200 with the right title (a made-up id returns 404), and all 27 lesson specs pass on the lab. 23 of those 27 specs report vacuous passes because their asserts are on constants; a planted wrong assert in lesson 11 turns it red, so the checks are real.
  • Slide text for the five demo scenes (overview, lens 0, focus on lesson 11, evidence, call), checked against deck.t27 on every preset (every_slide_fits_every_preset). One headline line per slide: the stage strip holds only one on wide and square (text_fits(2, 0, STAGE, wide) is false), and the viewer wraps titles greedily, so a headline that never wraps is the only one drawn the same everywhere.
  • Camera = the demo camera (the_camera_is_the_demo_camera): t27f_view draws the reel.t27 demo choreography, so lens 0 and focus cell 10 (lesson 11) are pinned.

Two compilers: t27c and t27b

The new spec, reel.t27 and deck.t27 were run under t27c (Zig backend) and under t27b (t27's own AArch64 backend, t27b test --check, qemu-aarch64 on the Railway lab).

spec t27c t27b
reel_t27_basics.t27 6/6, 0 vacuous 6/6, 195 runtime asserts
reel.t27 20/20 20/20
deck.t27 15/15 15/15, 135334 runtime asserts

Same verdict on every test. t27b also refused the first draft: it compared a str's u64 .len with an i32, which t27c accepted. Every length is now cast to i32 before the compare.

The t27b binary used was built 2026-10-10 from master. The t27c binary was built from 90fc25b.

Negative controls (both compilers)

planted fault t27c t27b
lesson 6 page marked not live, status left at 5 FAIL a_status_is_earned_not_chosen same test, line 202
a 47-char card row FAIL every_slide_fits_every_preset same test, line 235
a 23-char stage headline FAIL every_slide_fits_every_preset same test, line 231

Restoring the file returns both compilers to 6/6.

Stills

t27f_view drew all 15 stills (5 scenes x wide/square/tall) from this text and refused none. On the split slides every row is drawn whole on one line, and the glass card is at full opacity.

One finding: a viewer process started before t27-mcp 07e2c7c (STILL_CARD_ALPHA, gHashTag/t27-mcp#4) still draws split stills with the card at opacity 0. Restart the MCP server after updating it.

Not claimed

No GIF or MP4 is rendered or posted; these are stills for the chat. CI: cli-tri and t27b-native-ratchet are red on master itself (cli-tri: #9634, fix #9639), so they are not signals for this diff.

🤖 Generated with Claude Code

…Closes #9996)

specs/t27f/reel_t27_basics.t27 draws one real topic with the reel camera and the
deck look: the 27 lessons of gHashTag/trinity's t27 basics course, in order, one
reel row per three course modules. A cell's status is earned from two
measurements (lesson page live on t27.ai, lesson spec passes on the lab), and the
slide text of all five demo scenes is checked against deck.t27 for every preset.

Runs under both t27c and t27b with the same verdict on every test. t27b refused
the first draft for comparing a str's u64 .len with an i32; lengths are cast now.

Refs gHashTag/trinity#1677

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@gHashTag
gHashTag enabled auto-merge (squash) October 17, 2026 15:41
@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-10-17 15:41:28 UTC

Summary

Status Count
Total Open PRs 50
PRs with Failing Checks 49
PRs with All Checks Green 1
READY 0
FAILING 49
PENDING 0
NO CHECKS YET 0

These columns do not partition: 0 + 49 + 0 + 0 = 49, and there are 50 open PRs. A PR is being counted twice or not at all.

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=e769ef021713 != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

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.

t27f: first real reel -- the t27 basics course as a 27-cell map (trinity#1677)

1 participant