huginn import: a follow-up or idea the receiver wrote after the import began no longer blocks the resume #20

Merged
eureka merged 4 commits from eureka/import-resume-tolerates-window-writes into main 2026-11-08 21:58:56 +00:00
Owner

Takes up follow-up eureka-body:follow_up:stopped-import-repair.

Case. Nibu's huginn import --from eureka aetheria-release (943 receipts standing) refuses: the receiver holds aetheria-release:follow_up:chat-s4606-4606, her own run's task (ordinal 3339), admitted after the import began. Two guards refused it: the verb's resume (record under the root not imported from the source) and, one step behind, admission's refuse_unscoped_import (root_holds_native_write). Fixing only the verb would have stopped at the next batch.

Repair (narrowest). A native FollowUp or Idea admitted after the root's first imported document does not block resume, verbatim in both places via one predicate huginn_mind::inert_in_window. Reasoning: such a kind has no referent a replay resolves and derives nothing, so it cannot change a planned document's status; a key collision still refuses at admission. Any other native kind (question, ruling, resolution, target, ...) can answer/supersede/resolve a replayed document and still refuses; the verb stops and reports as ruling import-window-writes-ruled has it. The verb prints left in place, admitted by the receiver after the import began: ... and omits those from the final verification walk. No evict request: a receipt cannot be unwritten.

Tests. Unit (import.rs: resume, kinds, planned-key, other-source, verify walk), CLI end to end (import_resumes_past_a_record_the_receiver_admitted_after_it_began, import_still_refuses_a_native_question_admitted_after_it_began), admission (an_import_resumes_past_a_follow_up_or_idea_the_receiver_wrote_after_it_began). Hand mutants killed: min->max, inert kind dropped (both sides), imported_from check, planned-key check, ordinal window (both sides), verify exclusion, resume skip, report.

🤖 Generated with Claude Code

Takes up follow-up `eureka-body:follow_up:stopped-import-repair`. **Case.** Nibu's `huginn import --from eureka aetheria-release` (943 receipts standing) refuses: the receiver holds `aetheria-release:follow_up:chat-s4606-4606`, her own run's task (ordinal 3339), admitted after the import began. Two guards refused it: the verb's `resume` (record under the root not imported from the source) and, one step behind, admission's `refuse_unscoped_import` (`root_holds_native_write`). Fixing only the verb would have stopped at the next batch. **Repair (narrowest).** A native `FollowUp` or `Idea` admitted after the root's first imported document does not block resume, verbatim in both places via one predicate `huginn_mind::inert_in_window`. Reasoning: such a kind has no referent a replay resolves and derives nothing, so it cannot change a planned document's status; a key collision still refuses at admission. Any other native kind (question, ruling, resolution, target, ...) can answer/supersede/resolve a replayed document and still refuses; the verb stops and reports as ruling `import-window-writes-ruled` has it. The verb prints `left in place, admitted by the receiver after the import began: ...` and omits those from the final verification walk. No evict request: a receipt cannot be unwritten. **Tests.** Unit (import.rs: resume, kinds, planned-key, other-source, verify walk), CLI end to end (`import_resumes_past_a_record_the_receiver_admitted_after_it_began`, `import_still_refuses_a_native_question_admitted_after_it_began`), admission (`an_import_resumes_past_a_follow_up_or_idea_the_receiver_wrote_after_it_began`). Hand mutants killed: min->max, inert kind dropped (both sides), imported_from check, planned-key check, ordinal window (both sides), verify exclusion, resume skip, report. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
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>
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>
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>
eureka merged commit 9f27c05ac4 into main 2026-11-08 21:58:56 +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!20
No description provided.