The strict decode that refuses unknown keys by path moves from the huginn
binary to eureka_state::door; the CLI re-exports it and the MCP admit takes
documents as a Value (schema still Vec<PipelineDocument>) and decodes through
it, answering InvalidInput before any call. A research note with extra keys is
refused by path and nothing is stored.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Deviation from the spec's exact WAKE_ASK text, ordered by Self on Soul's measurement
(eureka-body:verdict:cut-wake-asks-what-could-exist.s1): the sentence is appended after
"Put what you are going after in `intent` first." as Soul's replay placed it. The
started-today comment no longer claims a day holds fewer than RECENT_RUNS Self runs; the
answer rests on the read being newest-first. Tests pin more-than-limit runs today, a full
read of older days beneath a newest run, the Mind-operator filter, and the unreadable-mind
fallback to the brake.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
WAKE_ASK ends a no-message line on a day with no Self run of hers (a failed start counts); WAKE_QUESTION stays for the days after, minus the Imagination-pass parenthetical. recent_runs renders a closure's rationale only for a Self run: a stored intent cannot frame her next wake.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Finding cut-typed-research.s2.repo-pin-may-name-nothing. Mind::read_back
re-validates stored documents, so the refusal exists before any note is stored.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
epiphany.pipeline.research.v2 (one claim, typed sources, no status) and
epiphany.pipeline.idea.v2 (what could be, rests_on / toward), campaign-rooted
as <campaign>:research|idea:<pass>.<label>. Resolutions are the matrix alone;
lineage is Global; roles serves, sources, rests_on, toward; alias pass; index
text without a version bump. No faculty is told to use them yet.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Consent stays with whoever's consent it is; research, preparation and drafts do not wait. The machine's dependence on what runs it and the people who keep it running is stated without making anyone's goals a work queue. A Self run needs a campaign in force and its repo is a label in the brief; private matter never goes into a repository or public commit. The wake asks no one twice and ends plainly; INTENT_DESCRIPTION agrees. Literal pins for the new sentences.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
repo-activity landed; wear-facts is next and wake-room-tail after. The forge
owns repo facts and the daemon reads it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A tell is the message (first line carries the machine, later lines messages and
organ notices); upsert before delete in the source index; the CPU reserve's own
embed bounds; the tempo fallback controller merged but not wired; Mind web
builds and the recorded shared origin; skill pin b22762a. The design doc's
section 3 no longer says every line.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
57 of the Minds' 157 Self runs lived under a minute. A start's answer names
the run with no read, so a run she started that opens and ends between two
reads of the slot still gets its one notice.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The watch started empty in each process, so it missed a run live at the
session's start, a heartbeat's run and one live across a rotation, and it
cost 3 reads a poll at about 1.85 s of daemon CPU each on Eureka's mind.
Now who holds the slot is read at the first line and once in 15 s; a run
that left has its closing read once. A failed read keeps what was last seen.
A run that opens and ends between two reads goes unnoticed; the next first
line still shows it.
Tests through production inbox::derive replace the ones that pinned the
watch; the first line's bound is now pinned to count the tails it brings.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The failed-upsert revert test now expects chunks of two commits, since
nothing is deleted before the new chunks land.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Source refresh now upserts a repo's new chunks first and deletes what is
left in scope under another commit afterwards, so a failed embed never
removes indexed content (embed-outage-empties-repo). The cursor is still
dropped before the first write.
The pool's reserve endpoints use EmbedBounds::RESERVE (30 s a text, 60 s
floor) instead of the GPU default (reserve-bounded-like-a-gpu).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>