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
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.
Summary
RuvNet Brain 4.0.2 currently exposes the bundled
lesson-seed.mjsrecords 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, andCode-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.mjsdeclares:--applystores the records as candidates awaiting ratificationscripts/wired-check.mjsdescribeslesson-seedas:The Console read model currently maps every
origin: user-statedrecord to the presentation string “you taught me this”, without establishing that the current user is the owner represented by the seed.Observed installation
~/.config/ruvnet-brain/lessons.jsonExample 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
user-stateddirectly into “you taught me this.”Suggested acceptance criteria
lesson-seed.mjson an unrelated user's machine.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.