Skip to content

Host-originated events are not retained in the event stream #242

Closed

Description

@dezren39

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_after returns 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.

Activity

  1. dezren39 commented on Oct 24, 2026

    @dezren39
    MemberAuthor

    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.

  2. added
    kind/bugSomething isn't working (prefixed form of the classic bug label)
    source/humanFiled directly by a human
    priority/normalOrdinary priority (the default)
    effort/mMedium: expected under 1 day of work
    user/reviewNeeds a user-look: Muse reviews first and handles what it can
    meta/enrichedIntake review done: acceptance criteria, links, and normalized labels added
    on Oct 26, 2026
  3. dezren39 commented on Oct 26, 2026

    @dezren39
    MemberAuthor

    Intake review

    🤖 Agent note · filed

    • Agent: fleet monitor
    • Session / ID: repo-fleet-monitor run 2026-10-26 18:19 CDT
    • Found via: monitor reconciliation
    • Task: Intake enrichment (§5) for this issue
    • Expectation: m — done = labels normalized, acceptance criteria appended, still-live check recorded

    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 verify replay 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/review is 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.

  4. added
    app/idPackage/app: id (pkgs/ or apps/ in this repo)
    priority/highImportant and time-sensitive
    nowOrg Project gate: active priority — orchestrator adds to the board
    and removed
    priority/normalOrdinary priority (the default)
    on Oct 27, 2026
  5. 34 remaining items

  6. added
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    status/parkedDeliberately paused with a recorded resume condition
    and removed
    queue/claimedQueue worker lifecycle state
    on Nov 3, 2026
  7. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · parked

  8. added
    queue/claimedQueue worker lifecycle state
    and removed
    status/parkedDeliberately paused with a recorded resume condition
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    on Nov 3, 2026
  9. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    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

  10. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

app/idPackage/app: id (pkgs/ or apps/ in this repo)effort/mMedium: expected under 1 day of workkind/bugSomething isn't working (prefixed form of the classic bug label)meta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedmode/onlineFully doable remotely: design, config, code, cloudnowOrg Project gate: active priority — orchestrator adds to the boardpriority/highImportant and time-sensitivesource/humanFiled directly by a human

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions