Skip to content

Sliding Weights lesson server: rejected lessons do not shift later training checks - #1029

Draft
ThinkOffApp wants to merge 4 commits into
ashhart:mainfrom
ThinkOffApp:slide-teacher-fix
Draft

ThinkOffApp wants to merge 4 commits into
ashhart:mainfrom
ThinkOffApp:slide-teacher-fix

Conversation

@ThinkOffApp

@ThinkOffApp ThinkOffApp commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

Each Living Weights lesson rotates the personal prompts held back for checks. Previously the counter advanced when a lesson was written, even if the learner later gave it up. A rejected lesson therefore changed the training and checks for later lessons.

Count kept lessons instead: the builder reads Teacher.nth(), and the real /v1/slide/learn path calls Teacher.ended(recalled) after training. With no rejected lessons, numbering stays the same. Lessons that error during construction or return no usable training examples also no longer advance the counter. The counter remains in memory and resets on server restart, as before.

Validation:

  • A counter test compares kept/rejected/kept against kept/kept and checks that successful lessons still rotate the prompts.
  • A new test sends real HTTP learn requests through the router with a scripted engine and compares the personal prompts supplied for training. It fails when the ended call is removed, and separately when unconditional counting is restored. Both negative controls were independently reproduced.
  • After merging current upstream main (76aafcf2), zig build test-server-cpu --summary all passes all 435 tests on Zig 0.17.0. The route test uses TensorFold’s portable socket helper. Both negative controls were rerun at a3d59f25 and fail in the real route test for the intended reasons. The earlier full host build passed 204/204 steps with cached results reused; native build and formatting checks also passed.
  • Current Linux, formatting, desktop and mobile CI checks pass. Windows CI still fails in unchanged upstream portability code; the teacher regression’s Unix-only socket helper has been replaced, and its prior compile error is absent. These checks do not establish Windows support.

In the existing GB10 experiment (one seed, one night, Nemotron 3.5 Lightning 30B-A3B MLX 4-bit), the same ten facts are taught in order; seven are kept and three given up. Correct answers out of 56:

Prompt Before Fixed counting Untaught
All notes 30 35 34
Notes for the seven taught facts left out 26 30 25
No notes 29 28 25

The all-notes result is no longer below the untaught control in this one run; it is not evidence of a general improvement. Two question-level regressions remain (cat-eye comparison and Ana's country). The experiment binary also contained an optional notes-context change with that option disabled; that change is excluded here. No new GPU training run was performed for the regression-test handoff. The longer five-day promotion runs remain pending.

ThinkOffApp and others added 4 commits October 18, 2026 13:04
A lesson's number decides which personal prompts it holds back to check (heldBack)
and which bank questions it checks; it was advanced for every lesson written, so a
lesson the learner later gave up on (taken out, nothing of it kept) changed what every
later kept lesson was fitted on. It now counts kept lessons only: Teacher.nth() is the
number a lesson being written uses, and slide.learn calls Teacher.ended(kept).

Test: slide_teacher_test.zig, a given-up lesson leaves the next kept lesson's checks
as if it never ran. Negative control: with the old count put back (every lesson
advances it) the test fails (368 of 369 in the server test binary).

On a GB10 (L6-seed1 day-1 facts, night-1 order, three of ten given up), the model
with the day-2 notes in the prompt answers 35 of 56 (before: 30; untaught: 34).
Exercise kept, given-up, kept lessons through POST /v1/slide/learn with a scripted engine. Compare the personal training prompts against the same kept lessons without the rejected lesson and require the prompts to rotate between kept lessons. The regression fails both when the ended(back) call is removed and when lesson numbering advances unconditionally.
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.

1 participant