Skip to content

Slice: Host Jim.edict as an active observer #301

Description

@flyingrobots

Slice

Host the smallest Jim.edict application as an Echo-realized active observer
and move production input from frontend operation calls to canonical event
delivery.

Parent: #295.

Minimum state machine

state:
  mode
  cursor
  active_buffer
  pending_action

on KeyEvent:
  request TextWindow

on TextWindow Reading:
  derive a Jim-owned operation intent

on operation Outcome:
  advance Jim state
  emit render projection

Acceptance criteria

  • edict/jim/src/Jim.edict owns the minimal persistent editor state and
    transition law.
  • Jedit/Bijou/native code normalizes terminal input to a canonical KeyEvent
    without interpreting command meaning.
  • Echo delivers the event to the installed observer at an explicit Jim
    basis and budget.
  • Jim.edict requests TextWindow.edict, receives a basis-bound Reading,
    and derives any ReplaceRange intent from Jim state.
  • Echo executes the compiler-produced generic child program and returns one
    outcome or typed obstruction.
  • Jim.edict alone advances mode, cursor, registers, and pending-action
    state, then emits a disposable render projection.
  • Jedit renders only the returned projection and performs no optimistic text
    mutation.
  • WAL, receipt, reading, Tick, Jim-state transition, and restart evidence
    form one inspectable worldline.
  • Negative gates reject TypeScript command-to-operation mapping, native Jim
    planners, handwritten packages, caller patches, and compatibility fallback.

Non-goals

  • No broad Vim parity. Prove one canonical event sequence first.
  • No application vocabulary or rope intrinsic in Echo.
  • No terminal/process/filesystem authority inside Edict.

Metadata

Metadata

Assignees

No one assigned

    Labels

    causal-ropeCausal rope text authority roadmapenhancementNew feature or requestsliceImplementable roadmap slicetext-authorityText authority and storage invariants

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions