Repository navigation
feat(course-access): every course free for everyone (rules VERSION 3) - #10842
Merged
Merged
Conversation
Owner, 2026-10-19: "make the courses free for everyone! our task is to grow the language". step_of now returns STEP_FREE for every rung; no course needs the club or the bot. LADDER_RUNGS is 1 (one rung, free, repeated for good). STEP_BOT and STEP_PAID stay, and may_open, stays_open, mint_ok and key_days are unchanged, so a key already minted keeps opening what it opened. The club stays the bot's own subscription for generations. Tests 18/18, 0 vacuous; a loop pins step_of(n) == STEP_FREE for n = 0..255. Negative control: the v2 step_of body turns 3 tests red. Sealed with t27c-bootstrap 0.5.2+239b4b059, zig 0.16.0. Closes #10798 phi^2 + 1/phi^2 = 3 | TRINITY Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ScHVrGSr6zZUdwkdC8DR9k
GitHub's update-branch reported a conflict; the merge is clean locally (git merge-tree). Picks up master's re-sealed specs/t27f/frontend.t27 (#10814), which this branch's coverage and spec-guards reds came from. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
4 tasks done
This was referenced Oct 19, 2026
Merged
Contributor
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #10798 (child of EPIC #9063)
Pull Request Checklist
Closes #10798t27c test-reportgives 18/18 PASS with 0 vacuoust27c seal --saveDescription
The owner, 2026-10-19: «сделай курсы бесплатно всех! наша задача язык раскачать!!». In English: make the courses free for everyone; our task is to grow the language. A course behind the club is a reader the language does not get. The club stays the bot's own subscription for generations.
step_of(opened)returnsSTEP_FREEfor every rung. In v2 the first three courses were free and every course after them was paid. Now no course needs the club or the bot.LADDER_RUNGScounts the rungs that differ beforestep_ofrepeats its last one. It was 4 in v2 (free, free, free, paid, then paid for good). It is 1 now (free, then free for good).STEP_BOTandSTEP_PAIDstay.may_open,stays_open,mint_okandkey_daysare unchanged, so a key already minted keeps opening what it opened.lesson_event,tells_ownerandmay_reportdo not depend on the paid rung, so they are unchanged.SITE_CHECKOUTandCONTENT_HIDDENstay false.Changes
specs/automation/course-access.t27:VERSION3 andstep_ofreturns free.step_of(VERSION + 1) == STEP_FREE..trinity/seals/automation_automation::course_access.json: resealed, 18/18.docs/now/2026-10-19-course-access-v3-every-course-free.mdTesting
t27c is built from 239b4b0. Since then bootstrap/ has had only one commit, the tower-http dependency bump (#9340). The run used zig 0.16.0.
t27c test-report specs/automation/course-access.t27t27c validate-vacuity --specs-dir <copy of this spec only>step_ofbody (if opened >= 3 { return STEP_PAID; })The negative control turns three tests red: "the fourth and every one after it are free too, no club asked", "every course is free, for every reader, however many he has opened" and "VERSION says what the header's last note says".
Lowering:
node scripts/t27-logic.mjs <this tree> automation/course-accessfrom 999 lowered 9 fns, with 0 not lowered. In node,stepOf(1..10)gives[0,0,0,0,0,0,0,0,0,0]andstepOf(0, 254, 255)gives0,0,0.Local equivalents of the required checks, all ok:
tools/dupe_scan.py: no new duplicate body.tools/ci/check_specs_still_parse.py: 1 changed spec, 0 newly unparseable.check_all, rc 0. Foreign-line budgetcheck_budget, rc 0.tools/check_json_parses.py: OK.tools/check_now_entry_shape.py: 1 entry, well formed.Review Notes
apps/vibee-editor/render/src/spec/course-access.*. In trinity it isapps/website/specs/ladder/course-access.t27andsrc/lib/courseAccess.logic.ts. The host binding tests name the spec's test titles, and two of those titles are new or renamed here.courseLadder.tsjudges a course already in the reader's stored list bystaysOpen(storedStep, paid). So a course stored on a paid rung under v2 still closes when that reader's club ends. The reader cannot reopen it either, because it is already in the list. A host that must keep it open re-rungs it withstep_of. Another way is a VERSION 4 in whichstays_openkeeps paid rungs open.φ² + 1/φ² = 3 | TRINITY
Generated by Claude Code