Commit graph

842 commits

Author SHA1 Message Date
0c4e700b9e Import: the resolution of a follow-up or idea the receiver wrote is inert in the window
inert_in_window covered FollowUp and Idea only, so a receiver's own resolution
of such a record, admitted after the import began, refused the rerun in both
the tool (resume/window_writes) and the daemon (root_holds_native_write).
A Resolution whose subject is a follow-up or idea the plan does not replay
touches nothing planned and now stays beside the replay. One predicate, both
callers; the resolution of a replayed follow-up, or of any other kind, still
refuses.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-09 11:48:19 +00:00
f47210fe0d Merge pull request 'mind-body: a brief is done when its change lands, told once as one closing rule' (#21) from hands/eureka-body-brief-done-means-landed into main 2026-11-09 09:34:42 +00:00
Meta Vens
122a968f30 closing rule: acts without a commit close Recorded, Fixed names the merge or squash commit, the reminder bounds Recorded; each flush names its own reason
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-09 10:27:54 +01:00
Meta Vens
e47eec7e85 brief-done-means-landed: one closing rule for the Self run, told once at start; briefs and flush point to it
A brief that asks for a change closes Fixed by a default-branch commit, not Recorded on an open PR; work waiting on someone else is superseded by her own follow-up. Replaces the three 'Recorded with your answer' sentences.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-09 10:04:02 +01:00
9f27c05ac4 Merge pull request 'huginn import: a follow-up or idea the receiver wrote after the import began no longer blocks the resume' (#20) from eureka/import-resume-tolerates-window-writes into main 2026-11-08 21:58:56 +00:00
d0edfdb403 import: publish the amended ImportOutsideCampaign text; pin the outcome-citation path
Soul: the schema carries the refusal's doc comment, so the published response
schema follows it; an imported Superseded{by} naming the receiver's native
follow-up is refused, which a source-only mutant now fails.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-08 21:55:35 +00:00
9958555d71 import: an imported record never cites or resolves the receiver's own native document
Soul F1: the window left open by `inert_in_window` let a later imported record
withdraw or cite the receiver's native follow-up. Admission now refuses an
imported document that cites or resolves a native document of its own root
(another root's native documents are cited as ever). Stale docs and the import
help name the amended rule.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-08 21:43:00 +00:00
241a4d5584 Merge origin/main 2026-11-08 21:28:25 +00:00
0f417143f7 import: a follow-up or idea the receiver wrote after the import began no longer blocks the resume
Nibu's stopped import of aetheria-release was refused twice over for her own
run's follow-up chat-s4606-4606: by the verb's resume (a record under the root
not imported from the source) and, had that passed, by admission
(ImportOutsideCampaign, a native write under the root). Both now leave a native
FollowUp or Idea alone when it was admitted after the root's first imported
document, share one predicate (`inert_in_window`), and the verb names what it
left in place and leaves it out of the final verification walk. Every other
native kind (a question, a resolution, a ruling, a target) can answer or
resolve a replayed document and still refuses; a collision on a planned key
still refuses. No evict verb: a receipt cannot be unwritten.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-08 21:28:25 +00:00
32fa1f4f3c Merge pull request 'admission: an import replays a cite of another root's closed follow-up' (#17) from eureka/import-foreign-cite-as-of-source into main 2026-11-08 21:28:13 +00:00
209712e2c9 Merge origin/main into the import-foreign-cite PR: #19 landed the same waiver
The code of this branch is dropped for main's `historic` waiver; what remains
is the committed Finding case (thing2 1815, aetheria-release 2247) and the
kind-agnostic case, which kills a waiver limited to follow-ups.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-08 21:20:51 +00:00
6e6fd7511c Merge pull request 'huginn-mind: an import is not refused for citing another campaign's document resolved after its source ordinal' (#19) from hands/eureka-body-import-history-order into main 2026-11-08 21:06:20 +00:00
Meta Vens
e77e0f361b admission: a report's spec is always its own campaign's, so its status check is never skipped
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 21:57:38 +01:00
Meta Vens
8cc62f192e move_tests: a spec's successor lands with its supersession
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 21:56:22 +01:00
Meta Vens
f4f857a7da admission: skip the status check only for a citation into another campaign; drop the unreachable run-claims skip; a test for each live site
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 21:54:59 +01:00
Meta Vens
6beb52e809 move_tests: B's two receipts
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 21:16:43 +01:00
Meta Vens
3b64a1aaa3 admission: an import is not refused for citing a document resolved after its source ordinal
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 21:15:16 +01:00
971d96212f move tests: pin the real Finding case and the kind-agnostic waiver
The replay of a cite of another root's closed document is pinned with a
Finding deferred to a closed follow-up (the thing2 and aetheria-release
cases) and an Idea superseded by a recorded Idea of another root, which
kills a waiver limited to follow-ups.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-08 20:02:05 +00:00
7552774a72 Merge pull request 'mind-body: every Persona line asks for her own work, plans first' (#18) from hands/eureka-body-every-turn-asks-her-work into main 2026-11-08 19:57:10 +00:00
Meta Vens
48e81bdf80 persona: the work tail names her plans as well as her open follow-ups
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 20:55:13 +01:00
Meta Vens
d386da81bc persona: the work question names her plans and memories, says open pages, and drops the messages clause from no-message lines
WORK_QUESTION also sends her to huginn query over her own plans, frames what she
finds as candidates she weighs, names --cursor, and says every follow-up in her
campaigns is hers whoever filed it. The messages clause is ANSWER_MESSAGES, set
before the question on first lines that carry messages only. Stale prose about
bare later lines is corrected in the body map, MESSAGES_HEADER's comment and one
test name.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 20:46:11 +01:00
7218c4a9d7 admission: an import replays a cite of another root's closed follow-up
A resolution's cited referent had to be in force in the receiver. When the
receiver had already imported the other root (cultlib-gaps, aetheria-ew) and
that referent closed later in the giver, the replay of the earlier Deferred
cite was refused with CitesResolvedDocument and the import stopped. The cite
was in force when the giver made it; an import now asks only that the
foreign referent is held (A7), not that it is still open. Same-root cites
replay in the giver's order and keep the rule; native writes keep it.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-08 19:32:01 +00:00
Meta Vens
e72f69f558 body map: first line ends on WORK_QUESTION, later lines on WORK_TAIL
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 20:29:50 +01:00
Meta Vens
e1636761f9 persona: every line asks what she is building; chat is answered as part of that work
WORK_QUESTION ends every first line, with messages or without, and sends her to
her own mind (huginn campaigns, open, unreported) and to start_self_run. WAKE_ASK
is now only the once-a-day new-thing opener before it. WORK_TAIL ends every later
line (plain, refused, stale, notices, Self replies). WAKE_QUESTION and
TRAFFIC_QUESTION are deleted.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 20:29:50 +01:00
7c586e39b5 Merge pull request 'huginn import: a steward pulls a moved campaign into her own mind' (#16) from hands/eureka-body-campaign-import-verb into main 2026-11-08 18:57:55 +00:00
660e1491b1 Merge pull request 'huginn-mind: a campaign moves out of a mind (Moved freeze, import provenance)' (#15) from hands/eureka-body-campaign-move-mind-side into main 2026-11-08 18:31:21 +00:00
Meta Vens
8e2eb46522 mind-body: the moved-brief test carries the campaign it imports under
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 19:23:45 +01:00
Meta Vens
73e3c05af6 mind-body: the moved-brief test imports into a root with no native write
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 19:22:56 +01:00
Meta Vens
7e2f893439 huginn import tests: the history has four receipts under the root; the brief test uses the testkit's own instance
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 19:18:36 +01:00
Meta Vens
fd19f13eb1 huginn import: the verification test names the field path as the document spells it
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 19:18:36 +01:00
Meta Vens
7334c4278d huginn import tests: name the viewing helper apart from the file's own
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 19:18:35 +01:00
Meta Vens
56df1ca31f mind-body: briefs a moved campaign carries are not her Persona's briefs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 19:18:35 +01:00
Meta Vens
a61586b030 huginn import: end-to-end tests over two live daemons, and the verification walk's differences
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 19:18:35 +01:00
Meta Vens
5f67eb1188 huginn import: the receiver's Self replays a moved campaign from the giver's mind
The verb walks the giver (Query only), plans with huginn_mind::plan, walks her own root to
resume by what she holds, admits one batch per source receipt with imported_from, and ends
with a verification walk. Settings::source builds the giver's client from explicit flags.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 19:18:35 +01:00
Meta Vens
f2cfdcbeb6 huginn-mind: import::plan owns its foreign keys
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 19:18:35 +01:00
Meta Vens
d215a6fa03 huginn-mind: import::plan lays out a moved campaign's replay, and the move tests replay through it
The verb and the tests share one definition of a replay batch: grouped by source receipt
ordinal, the Moved dropped from its own batch, foreign referents listed, oversized or
unordered receipts refused. Deletes the hand-built replay filter in move_tests.rs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 19:18:35 +01:00
Meta Vens
0d4cccc157 huginn-mind: a campaign cannot be moved out of this mind's own instance root
A campaign slugged like the mind shares a root with the instance, its stewardships, memories and thoughts, so its Moved froze and closed all of them. A8 refuses such a Moved (MoveOfInstanceRoot); an import of the same campaign is refused already, the instance's records being native writes under its root.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 19:12:13 +01:00
Meta Vens
905c293396 huginn-mind: replay detection compares provenance
Whoever wrote a batch first decided its attribution: a native writer of a batch already imported was told AlreadyAdmitted and the record kept naming the source, and an import of a batch another source landed read the same. A9 now treats a stored receipt as a replay only when its imported_from equals the candidate's; otherwise the batch meets its own identities at A10 (IdentityCollision). A source naming this mind in another case is another mind, as the instance grammar already rules, and is pinned by a test.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 19:12:07 +01:00
Meta Vens
1533755425 huginn-mind: an import carries only a campaign's history, under a root only imports have written
Import mode turns derivation off, so it is open to any document whose derived writes native admission would have made: an imported hand-off left the steward's stewardship in force beside it, an imported ruling answered a question the Answered of which was never written and let a native ruling answer it again. A8 now refuses an import (ImportOutsideCampaign) unless each document's root names a campaign this mind holds or the batch carries and no native write has touched that root. Instance-rooted records have no campaign and never qualify. Replays that build a campaign from imports alone are untouched; the move tests that built the receiver natively now build it by import.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 19:11:56 +01:00
Meta Vens
3114e011e4 huginn-mind: a Moved resolution lands alone under its root
A sibling written in the Moved's batch froze with the campaign and never reached the receiver, whose replay stops before the Moved. A8 now refuses any staged document, derived ones included, rooted at a campaign whose Moved is in the same batch (CampaignMoved), on the giver and on import alike.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 19:05:45 +01:00
Meta Vens
b65eaa1fa9 huginn-mind: a moved campaign's closer is the Moved alone; the external listing names its referent
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 18:07:27 +01:00
Meta Vens
c4d38bcea5 huginn view: the header names an imported document's source and a moved document's receiver
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 17:47:43 +01:00
Meta Vens
c76e37280d huginn-mind: a Moved resolution freezes its campaign's root and the receiver replays the history as an import naming its source
The giver: (Campaign, Moved) joins the matrix; a Moved to this mind refuses MoveToSelf and a withdrawn Moved MoveIsFinal; any staged document rooted at a moved campaign, derived ones included, refuses CampaignMoved; Docs::closing_resolution reads every other document under the root closed by the Moved, and the image fans status_changed out so an earlier as_of still reads in force. The oracle derives the same fallback independently.

The receiver: PipelineProvenance.imported_from (optional, absent from every other receipt and from the digest) names the source receipt and the externals the batch cites. An import derives nothing, refuses its own instance, a Moved outcome, and an external this mind holds; a listed external stands in for an absent referent. mind-body persona.rs gains one outcome_words arm for the new variant.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 17:47:43 +01:00
Meta Vens
f29e15481e eureka-pipeline: a resolution outcome Moved { to } closes a campaign for the mind that gives it up
Additive resolution v2 variant, bounded as a Slug; the golden gains one line, the published schema one arm. Admission owns when it may be written.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 17:47:32 +01:00
91279f6496 Merge pull request 'mind-body: a nightly memory consolidation run for one Mind (typed Slept cut line)' (#14) from hands/eureka-body-sleep-turn-one-mind into main 2026-11-08 14:03:34 +00:00
Meta Vens
6aa5e01292 mind-body: the newest slept night's closing decides the day, not an older one's
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>
2026-11-08 14:24:07 +01:00
Meta Vens
7c9ccb9499 mind-body: the Sleep run is the night's memory consolidation only
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>
2026-11-08 14:12:06 +01:00
Meta Vens
2e98327ded eureka-pipeline, huginn-mind, mind-body: a night's cut line is its typed Slept closing
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>
2026-11-08 14:07:22 +01:00
Meta Vens
ee5a4f92bb mind-body: a failed night after a slept one leaves the slept night's cover standing 2026-11-08 12:54:03 +01:00
Meta Vens
a621d03783 mind-body: public_surface names Night::from_settings 2026-11-08 12:32:32 +01:00