Skip to content

id(world): F12.2 world forking and templates #556

Closed

Description

@dezren39

What and why

id world fork creates a world from another's module and snapshot with provenance; templates are forks marked reusable; the F11.11 seed policy decides seed inheritance. Starting a world from an existing one is the cheapest way to reuse a configured program, and templates fall out of it.

Source

Current status

Not started. No Fork variant in WorldCommand (cli.rs:1388); grep -rn 'fork' pkgs/id/src/world*.rs has no fork operation.

Acceptance criteria

  • A plan fixes fork semantics, the provenance record, template marking and seed inheritance under the F11.11 policy
  • id world fork creates a world from another world's module and snapshot, with provenance
  • Templates are forks marked reusable
  • Tests cover provenance and that the seed is inherited only as the policy allows

Size

M

Prerequisites

Activity

  1. dezren39 commented on Oct 25, 2026

    @dezren39
    MemberAuthor

    Progress (Session C, PR #801): implemented the store-level fork — world_store::fork_world copies a source world's journal and modules into a new world, rewrites the Created header, and appends a JournalEntry::Forked provenance record; ModuleProvenance::Fork (ForkProvenance) records the fork origin. Tests cover the copied state, provenance, the template flag, and refusal on a mismatched world. Remaining: the id world fork CLI + admin frame wiring (copy-on-serve), and the F11.11 seed-inheritance policy hook.

  2. added
    kind/featureNew feature or capability request
    source/humanFiled directly by a human
    priority/normalOrdinary priority (the default)
    effort/mMedium: expected under 1 day of work
    app/idPackage/app: id (pkgs/ or apps/ in this repo)
    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

    Fleet-monitor intake pass (2026-10-26). Body already carries a full ## Acceptance criteria section, so this pass is label normalization plus a liveness check — no body edit.

    Verified live on main e3467560 (2026-10-26): WorldCommand in pkgs/id/src/cli.rs has no Fork variant, and there is no fork operation in the world modules. Still live, exactly as filed.

    Related: prerequisites #534 (tracking issue for the F12.1 manifest work this builds on) and #543 (F11.11 seed policy — decides seed inheritance for forks) are both still open and unenriched. The seed-inheritance acceptance bullet cannot be settled before #543's policy exists.

    Risks / notes: provenance is the part that must be right from day one — a fork without a trustworthy provenance record creates exactly the ambiguity this feature exists to remove. Template marking is minor by comparison and can follow the core fork.

    Suggested approach: land the plan bullet first (fork semantics, provenance record shape, template marking, seed inheritance under #543's policy), then implement id world fork with provenance tests before template marking.

  4. added
    nextOrg Project gate: queued next — orchestrator adds to the board
    on Oct 27, 2026
  5. dezren39 commented on Nov 1, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · picked up

  6. 7 remaining items

  7. added
    queue/queuedHas a queued task in the Supabase agent queue
    task/small-fixQueue packet kind: bounded fix with reproduction and targeted tests
    work/assignedQueue worker lifecycle state
    queue/claimedQueue worker lifecycle state
    and removed
    work/assignedQueue worker lifecycle state
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 1, 2026
  8. dezren39 commented on Nov 1, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · picked up

    • Agent: queue worker (repo-worker-code), lane B shift
    • Session / ID: queue task 4824
    • Found via: queue claim
    • Task: Wire id world fork CLI + template surface (F12.2 remainder) — WorldCommand::Fork variant, template identifiability, CLI tests; store behaviour unchanged.
    • Expectation: effort/m — done = PR open with CLI fork tests passing (laptop/CI), forked dir contains only journal + modules.
    • Links: task 4824; branch to follow
  9. added 2 commits that reference this issue on Nov 1, 2026
  10. dezren39 commented on Nov 1, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · done

    • Agent: queue worker (repo-worker-code), lane B shift
    • Session / ID: queue task 4824
    • Found via: queue claim
    • Task: Wire id world fork CLI + template surface (F12.2 remainder) — done. PR feat(id): wire id world fork CLI + provenance inspect (F12.2 remainder) (#556) #3291 merged @b56ccda5c (fix commit c8c1737 verified on origin/main).
    • What landed: WorldCommand::Fork (source dir, destination dir with absent-or-empty guard, --name defaulting to the destination dir name and validated by validate_world_name, --template, --json; source id read from its journal Created header) wiring world_store::fork_world unchanged, plus WorldCommand::Provenance, a local inspect surface printing a world directory's Created id + latest Forked entry (origin, module hash, template flag, sequence) — no local inspect surface existed and host world list returns name/open only, so this is the smallest honest wiring for template identifiability.
    • Verification: laptop cargo test --test world_fork_cli 6/6 (fork restores under the new id with the parent's program; forked dir contains only journal.jsonl + modules/ even with a source seed.secret — the F11.11 pin; template flag recorded + identifiable; chained-fork provenance; torn-tail discard; refusal cases), --test world_fork 4/4, --lib cli:: 112/112; rustfmt clean. Codex review: 2 P2 findings on the first commit (oldest-vs-latest Forked entry; unterminated-entry acceptance) — both fixed with regression tests, threads replied + resolved, re-review on c8c1737 clean (no findings).
    • Issue state: all id(world): F12.2 world forking and templates #556 acceptance criteria are now met (semantics/provenance/template record landed in 8a84035; CLI surface + surface-level seed pin landed here) — closing.
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 workenhancementNew feature or requestkind/featureNew feature or capability requestmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addednextOrg Project gate: queued next — orchestrator adds to the boardpriority/normalOrdinary priority (the default)source/humanFiled directly by a humantask/small-fixQueue packet kind: bounded fix with reproduction and targeted tests

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions