mind-body: a nightly memory consolidation run for one Mind (typed Slept cut line) #14

Merged
eureka merged 11 commits from hands/eureka-body-sleep-turn-one-mind into main 2026-11-08 14:03:34 +00:00
Owner

Cut eureka-body:cut_spec:cut-sleep-turn-one-mind.r2 (reports h1-h3, Soul verdicts s1-s3; s3 may merge). A Sleep run in the Persona slot during a heartbeat window (HEARTBEAT_SLEEP_UTC + HEARTBEAT_SLEEP_MINDS, both or neither) where the Mind disposes of every memory of her day by typed operations. The day's cut line is ResolutionOutcome::Slept { line, day_through }, checked at admission. Consolidation only: contemplation is its own session (ruling contemplation-own-session), a later cut. Deploy: daemon on every Mind first, then mind-body; first Mind is Weksa.

🤖 Generated with Claude Code

🤖 Generated with Claude Code

Cut eureka-body:cut_spec:cut-sleep-turn-one-mind.r2 (reports h1-h3, Soul verdicts s1-s3; s3 may merge). A Sleep run in the Persona slot during a heartbeat window (HEARTBEAT_SLEEP_UTC + HEARTBEAT_SLEEP_MINDS, both or neither) where the Mind disposes of every memory of her day by typed operations. The day's cut line is ResolutionOutcome::Slept { line, day_through }, checked at admission. Consolidation only: contemplation is its own session (ruling contemplation-own-session), a later cut. Deploy: daemon on every Mind first, then mind-body; first Mind is Weksa. 🤖 Generated with [Claude Code](https://claude.com/claude-code) 🤖 Generated with [Claude Code](https://claude.com/claude-code)
RunTurn gains Sleep and RunSlot/RunTurn::slot (PersonaTurn and Sleep hold the Persona slot, a Self run the other); live_holder, launch holders and the unit template compare slots, not turns. MemoryOrigin gains Sleep { run }. Admission refuses an unpaired consolidation both ways (MindRefusal::UnpairedConsolidation): a memory that consolidates others without a Superseded resolution of each by it in the batch, and a memory Superseded by memories that do not name it. Published schemas regenerated.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The spawn prelude leaves one_process for a shared start_session. sleep.rs is the one owner of a night: the night line (her day whole, open items, the tide), SleepReply and its schema, the decoder's ledger (every day memory exactly once, ids her memories in force, one conversation per consolidation, told back, third refusal ends it), admission of whole operations in batches that never split a consolidation, and the closing of the run with her line. The heartbeat opens one Sleep run per listed idle Mind per window (HEARTBEAT_SLEEP_UTC, HEARTBEAT_SLEEP_MINDS); a missed night is not made up and a failed one not retried.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The day began at the previous Sleep run whatever became of it, so the memories past DAY_MAX and a failed
night's whole day never met the disposition cover-the-day requires. A night now closes with where its day was
covered through (the ordinal of the last memory it was shown), and the next day is what was admitted after the
newest night that closed 'slept:'; the first night's day is the 24 hours before it opened. A consolidation is
made by a night, whatever room it keeps, so it is not the next day's memory.

Night::from_settings carries the both-or-neither start check out of the binary where a test reaches it.
Tests pin last_sleep with the unit gone, the window's minutes and its 23 and 59 bounds, and the half-set start.
ResolutionOutcome::Slept { line, day_through } is how a Sleep run ends when the ledger took her reply; day_through is the last memory of her day she was shown. CitationRole::DayThrough (day_through) makes the memory an A7 referent and a cites/cited edge; admission refuses Slept on any subject but a Sleep run, a day_through that is not a memory admitted before the batch, and skips the in-force check for that role since the night may have consumed it. The outcome alias carries Slept. sleep.rs close admits the typed outcome and covered_through reads only the Slept closing in force and day_through's admission ordinal: SLEPT, THROUGH and the rationale parse are gone, and a hand closing or a withdrawn Slept covers nothing. outcome_words renders Slept as 'slept: <line>'. Published schemas and the envelope golden regenerated from the derivation.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
SLEEP_GUIDANCE opens on 'Tonight you consolidate your memory.' and drops the contemplation paragraph; the night line closes on what she did with her memory, in the guidance and the schema's description. The module doc names the run the night's consolidation (rulings sleep-day-coverage-ruled, contemplation-own-session). A test pins that the start line carries the consolidation opening and that neither the guidance nor the schema invites her to think, read or look into anything.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
A test with two slept nights pins that covered_through reads each night's own closing (the citation of its run), which no earlier test distinguished from the oldest Slept closing in force.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
eureka merged commit 91279f6496 into main 2026-11-08 14:03:34 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
GameCult/Huginn!14
No description provided.