Skip to content

feat(genome): lived-axis LLM-teacher expansion — the being learns from turns it stalled on - #2033

Merged
joelteply merged 1 commit into
canaryfrom
feat/being-loop-lived-expansion
Jul 26, 2026
Merged

feat(genome): lived-axis LLM-teacher expansion — the being learns from turns it stalled on#2033
joelteply merged 1 commit into
canaryfrom
feat/being-loop-lived-expansion

Conversation

@joelteply

Copy link
Copy Markdown
Contributor

The third efferent organ of the being-loop

The being-loop unifies lived + eval + received experience into one stream ([[lived-and-eval-experience-are-one-stream-one-being]]). Two of the three axes already teach:

  • Eval failures → remediation (RemediationSynthesizer, test-validated).
  • Received lessons → expansion (expansion_examples, deliberately-authored true knowledge taught directly).

The Lived axis was deferred with a named reason: a salient lived turn is a FAILURE (non-convergence / infra fault) with no known-correct answer, so echoing her stalled answer would train the failure, and with no test it can't be remediated. This builds the path expansion_examples pointed at.

What it does

A teacher re-answers the stimulus she stalled on, and that strong answer — not her stalled one — becomes the {question → answer} SFT pair. Safe on untestable material for the same reason the received axis is: validated per-consolidation by whole-being benchmark lift (#59), never per-trajectory.

Structured exactly like remediation (one seam, two organs):

  • teach.rs::synthesize_lived_expansion — inference core, mirrors synthesize_remediation's lane discipline (readiness gate → dedicated bare-base lane → degrade-loud) but no grader loop. Honesty guards: empty answers dropped; the teacher's system turn shapes generation but is not trained in (the pair is the bare question→answer).
  • curriculum.rs::LivedExpansionSynthesizer — selection wrapper, sibling of RemediationSynthesizer: deterministic detector-driven select() (unit-testable, only salient lived failures; a clean turn is never re-taught) + async synthesize(). Returns bare SFT {messages}, not a RemediationCorpus — the differing type is the honest signal these are two distinct organs.

Scope

Organ + tests only. Wiring the lived branch into the auto-firing consolidation driver (alongside the received branch) is a separate reviewable step, like #2028.

Tests

cargo test -p continuum-core --lib curriculum — 7/7 green, incl. two new lived-expansion selection tests (salient-lived-only; empty-when-nothing-salient).

🤖 Generated with Claude Code

…m the turns it stalled on

Completes the third efferent organ of the being-loop. The received axis
(expansion_examples) teaches deliberately-authored true knowledge directly; the LIVED
axis was deferred with a named reason — a salient lived turn is a FAILURE with no
known-correct answer, so echoing her stalled answer would train the failure, and with no
`test` it can't be remediated either. This builds the path expansion_examples pointed at:
a teacher RE-ANSWERS the stimulus she stalled on, and that strong answer becomes the SFT
pair. Safe on untestable material for the same reason the received axis is — validated
per-CONSOLIDATION by whole-being benchmark lift (#59), never per-trajectory.

Structured exactly like remediation (the outlier discipline — one seam, two organs):
- teach.rs::synthesize_lived_expansion — the inference core, mirroring
  synthesize_remediation's lane discipline (readiness gate → dedicated bare-base lane →
  degrade-loud to the live lane) but with NO grader loop: one teacher generation per
  stimulus. Two honesty guards: empty answers dropped (never ship a blank lesson), and
  the teacher's system turn shapes generation but is NOT trained in — the pair is the bare
  {question → answer}, so the being learns the class of question, not a scaffold.
- curriculum.rs::LivedExpansionSynthesizer — the selection wrapper, sibling of
  RemediationSynthesizer: a deterministic detector-driven select() (unit-testable with no
  inference — only SALIENT lived failures' stimuli; a clean turn is never re-taught) + an
  async synthesize() that resolves the teacher and calls the teach.rs core. Returns bare
  SFT {messages} (like expansion_examples), NOT a RemediationCorpus — the differing type
  is the honest signal these are two distinct organs, not one behind a fake corpus.

Organ + tests only; wiring the lived branch into the auto-firing consolidation driver
(alongside the received branch) is a separate reviewable step, like #2028.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LoTjvf5j3Ez13g6k8mRkFo
@joelteply
joelteply merged commit fc1d40c into canary Jul 26, 2026
4 checks passed
@joelteply
joelteply deleted the feat/being-loop-lived-expansion branch July 26, 2026 23:41
joelteply added a commit that referenced this pull request Jul 29, 2026
… that proves AND improves

Reframe (Joel): benchmarks are the learning signal, not just the scoreboard.
A graded task == a training example; the benchmark engine is the data
generator at the head of a continuous-learning loop. Prove (charts) and
improve (train on failures) are the SAME pass. Connects the merged benchmark
suite + unified experience stream (#2024) + stall-expansion (#2033) to
cross-grid distribution, sentinel experiential plasticity, and AttnRes skip
paths (the stable 'unet skip for generalization'). 5 gaps: cross-grid
matrix, failure->curriculum emit, dream-forge consumes eval-fails, held-out
+ stochastic-depth generalization, honest-instrument discipline.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q4NU4VNiELPQfBpCacDZGc
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant