Skip to content

Owner-specific lesson seeds appear as “you taught me this” on an unrelated installation #83

Description

@sparkling

Summary

RuvNet Brain 4.0.2 currently exposes the bundled lesson-seed.mjs records in the Console's What it's learned from you card as if they were lessons taught by the current user.

The installed lesson store contains 12 candidates. Nine are rendered as “you taught me this”, yet the seed source says these are “the lessons of 2026-07-21/22” derived from failures in a single owner's session. Their evidence names projects such as Code-PowerPlatePulse, Code-ruvnet-brain, Code-AppealArmor, and Code-BWEconstruction, which are not the current user's projects.

This looks like owner-specific migration/bootstrap data leaking into the general product experience with incorrect provenance.

Why this matters

The candidates are initially inert, so the ratification boundary prevents immediate enforcement. However, the Console invites the current user to approve them, and the bulk action treats nine records as user-stated. Ratification can raise several of them to blocking enforcement.

The result is a consent problem: the user is asked to ratify another owner's rules under a label asserting that they personally taught them.

Source evidence

scripts/lesson-seed.mjs declares:

  • “the lessons of 2026-07-21/22”
  • every lesson has a failure behind it “from a single session”
  • user-stated means “the owner's words can be quoted”
  • --apply stores the records as candidates awaiting ratification

scripts/wired-check.mjs describes lesson-seed as:

one-shot seeding, run deliberately by a human

The Console read model currently maps every origin: user-stated record to the presentation string “you taught me this”, without establishing that the current user is the owner represented by the seed.

Observed installation

  • RuvNet Brain: 4.0.2
  • Host: Codex on macOS
  • Store: ~/.config/ruvnet-brain/lessons.json
  • Store created: 2026-08-01
  • Total records: 12
  • User-stated: 9
  • Model-inferred: 3
  • Active: 0
  • Awaiting ratification: 12

Example stored record:

{
  "id": "L01-verify-with-a-capable-channel",
  "origin": "user-stated",
  "projects": [
    "Code-PowerPlatePulse",
    "Code-ruvnet-brain",
    "Code-AppealArmor"
  ],
  "repeatCount": 25,
  "status": "candidate"
}

The exact path by which the seed was applied should also be traced. It was observed after using the Console and its recommendation/fix flow, but this report does not claim that Fix all performed the write until that mutation path is proven.

Expected behavior

  • A fresh user's personal lesson store starts empty.
  • Bundled owner-specific lessons are never represented as the current user's history.
  • One-shot migration data is applied only through an explicit, correctly scoped human action.
  • Demonstration data, if retained, is clearly labelled as demonstration data and cannot be ratified into personal policy.
  • Provenance identifies the actual source and owner class rather than translating user-stated directly into “you taught me this.”

Suggested acceptance criteria

  • Trace and remove any installer, updater, Console recommendation, or fix path that can apply lesson-seed.mjs on an unrelated user's machine.
  • Add a fresh-install test proving the personal lesson store contains no bundled owner lessons.
  • Detect the known 12-record seed fingerprint in existing stores and quarantine it or offer an explicit reversible cleanup.
  • Prevent bulk ratification from treating bundled/migrated/example records as current-user statements.
  • Make Console provenance distinguish current-user, imported-owner, model-inferred, and demonstration records.
  • Test that an unrelated installation can never render these seeds as “you taught me this.”
  • Preserve the existing rule that no candidate can influence behavior before explicit ratification.

Related but distinct issues checked

Existing issues concerning empty lesson state and manual capture (#16 and #25) are related context, but neither covers cross-user seed provenance or ratification of bundled owner-specific rules.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions