Repository navigation
Closed
Labels
app/idPackage/app: id (pkgs/ or apps/ in this repo)Package/app: id (pkgs/ or apps/ in this repo)effort/mMedium: expected under 1 day of workMedium: expected under 1 day of workkind/bugSomething isn't working (prefixed form of the classic bug label)Something isn't working (prefixed form of the classic bug label)meta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedIntake review done: acceptance criteria, links, and normalized labels addedmode/onlineFully doable remotely: design, config, code, cloudFully doable remotely: design, config, code, cloudnowOrg Project gate: active priority — orchestrator adds to the boardOrg Project gate: active priority — orchestrator adds to the boardpriority/highImportant and time-sensitiveImportant and time-sensitivesource/humanFiled directly by a humanFiled directly by a human
Description
Problem
Host-originated events (presence, capability results, ticks) reach the program but are not retained in the event stream, so events_after never returns them. Recorded fixtures (PR #239) therefore cannot contain them, and any program that consumes them replays to a mismatch. territory is one example.
Options
- Record from the journal, not the event stream. Export the journaled host events through an admin-authorized path. This needs a rule about which host events a joiner may see.
- Retain host events in the stream. This changes what joiners receive and needs a visibility rule for capability results.
Either way, world.rs needs a decision on visibility before fixtures can be complete for interactive programs.
Acceptance criteria
- A visibility decision for host-originated events is recorded on this issue: which host events a joiner may see, including capability results.
- Per that decision, host-originated events are either retained in the event stream or exportable from the journal through an authorized path.
-
events_afterreturns the retained host events in order, and recorded fixtures (PR feat(id): record world sessions to replayable fixtures #239) can contain them. - Replaying a program that consumes host events (e.g.
territory) matches live behavior, with tests covering the retention path.
Metadata
Metadata
Assignees
Labels
app/idPackage/app: id (pkgs/ or apps/ in this repo)Package/app: id (pkgs/ or apps/ in this repo)effort/mMedium: expected under 1 day of workMedium: expected under 1 day of workkind/bugSomething isn't working (prefixed form of the classic bug label)Something isn't working (prefixed form of the classic bug label)meta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedIntake review done: acceptance criteria, links, and normalized labels addedmode/onlineFully doable remotely: design, config, code, cloudFully doable remotely: design, config, code, cloudnowOrg Project gate: active priority — orchestrator adds to the boardOrg Project gate: active priority — orchestrator adds to the boardpriority/highImportant and time-sensitiveImportant and time-sensitivesource/humanFiled directly by a humanFiled directly by a human
Activity
dezren39 commentedon Oct 24, 2026
id train triage (2026-10-24): too-big-needs-design — host-event retention + joiner-visibility rule (this is the F11.11 host-events remainder); events_after never returns host events.
docs(id): Phase 14 plan — close-out: finish, measure, verify, open th…
dezren39 commentedon Oct 26, 2026
Intake review
🤖 Agent note · filed
Still live (verified this run): PR #239 (
feat(id): record world sessions to replayable fixtures) merged 2026-10-18, and this issue is its named follow-on: host-originated events still are not retained, so the fixtures #239 made possible cannot contain them. No later merged PR or issue closes the retention gap — the related world items since (#543 closed, #544 open) concern projection/verify, not host-event retention.Related: PR #239 (fixture recording, merged), #544 (
id world verifyreplay self-check, open — its replays are exactly what mismatch without host events),territory(the example consumer named in the body).Notes / risks: this is gated on a genuine design decision — the visibility rule for host events (especially capability results) that joiners may see. That decision is why
user/reviewis applied: Muse should take the first pass at the visibility rule before a worker implements either option. Implementing retention without the rule would change what every joiner receives.Suggested approach: decide the visibility rule on this issue first (journal-export vs stream retention is downstream of it), then implement the smaller of the two paths that satisfies it and extend the #239 fixture tests to include a host event.
34 remaining items
dezren39 commentedon Nov 3, 2026
🤖 Agent note · parked
dezren39 commentedon Nov 3, 2026
agent-note:v1
task: 6505
lane: code-j
state: picked-up
summary: Revalidating PR #3998 (fix/id-242, head 47937fe) against fresh main c02e641 for task 6505; no held/user-owned/do-not-merge/do-not-auto-edit labels on #242 or PR #3998. Branch is 1212 behind / 6 ahead; will merge current main into the PR branch on the laptop (branch's own history pattern), resolve conflicts preserving the recorded journal/admin-export decision, disposition the Codex P2 finding, verify tests, and land under standing criteria.
next: merge origin/main into fix/id-242 in laptop worktree ~/git/fleet/6505
dezren39 commentedon Nov 3, 2026
agent-note:v1
task: 6505
lane: code-j
state: done
summary: PR #3998 merged (merge commit 07b7d70); #242 closed by the merge. Rebase was done as merges of current main into fix/id-242 (branch's own pattern; heads 514e52d onto c02e641, then 6bc2e82 onto 4a29ec8). Merge-conflict resolutions of substance: (1) journal-version collision — main had assigned version 4 to the world-budget contract, so the PR's open-presence version was renumbered 4 -> 5 and MAX_JOURNAL_VERSION is now 5 (the PR body's "checkpoint version 4" line is superseded by this); journal_version_required_by takes the max of budget/presence requirements. (2) Auto-merge had put main's committing chat() body inside the PR's prepare_chat, double-applying chat events (commit_prepared "prepared world event is stale"); prepare_chat again only builds the event, keeping main's #2244 abuse-bucket check. (3) Main's budget-compaction and checkpoint-sequence tests were adapted to the combined contracts (header is max(budget, presence) = 5; checkpoint events are participant-stream events, not host System events). Codex P2 finding (admin_history_bytes re-serialization) dispositioned on its thread: tracked by #4633.
tests: cargo test -p id --lib on the laptop: 1860 passed, 0 failed (includes territory/fixture replay coverage). One pre-existing failure NOT caused by this merge, reproduced identically on clean origin/main: id-core membership::layer::tests::test_a_sequential_named_create_is_refused_even_with_the_smaller_id.
next: none for #242; incremental admin-history byte tracking continues on #4633