Skip to content

Roadmap: causal rope everywhere and only causal rope #255

Description

@flyingrobots

Target

All product text truth in Jim flows through graph-backed causal rope authority. Full strings may exist only as imports, exports, render windows, tests, or caches. They must never be authority.

Definition of done

  • Every buffer has a BufferWorldline and current RopeHead.
  • Every edit is an admitted causal ReplaceRange producing rope rewrite/diff/tick evidence unless it is a logical no-op.
  • Standard undo and redo are forward causal intents derived from Echo-retained receipts and survive process restart.
  • Every save/export creates Echo/Jim anchor or checkpoint evidence without mutating text authority.
  • Every product read names basisHeadId and byteRange.
  • Gutter, footer, dirty state, and :why are backed by rope facts rather than Git or snapshots.
  • Full-snapshot fixture authority is test-only and import-banned from product code.

Goalposts and slices

CR-00 - Seal snapshot escape hatches

Goalpost: make the full-snapshot runtime visibly test-only and prevent product code from using any non-causal text authority.

CR-01 - Echo CausalAnchor integration

Goalpost: use application-requested, Echo-admitted causal anchors as the generic durability primitive behind Jim rope checkpoints.

CR-02 - Installed graph rope authority

Goalpost: make installed Jim create, read, replace, and checkpoint through graph-backed rope authority by default.

CR-03 - Coordinates and materialization discipline

Goalpost: make UTF-8 byte ranges authoritative and require every materialized string to name its rope head and byte range basis.

CR-04 - Durability semantics in save, dirty, and footer

Goalpost: express queued intent, admitted causal history, saved file projection, local Git, and remote Git durability as separate states.

CR-05 - Causal gutter and modified line markers

Goalpost: compute gutter modified/deleted markers from rope rewrite and diff evidence, never from Git diff.

CR-06 - Runtime-backed why evidence

Goalpost: make :why cite rope head, leaf, blob, rewrite, diff, tick, checkpoint, and anchor evidence from the runtime.

CR-07 - Retention, balance, and performance witnesses

Goalpost: prove causal rope is not full-snapshot cosplay with retained-byte, subtree-identity, balance, and materialization-budget witnesses.

CR-08 - Delete transitional text authority APIs

Goalpost: delete or quarantine all transitional full-root/snapshot authority APIs so only causal rope remains in product code.

CR-09 - Dogfood cutover and regression net

Goalpost: daily-drive Jim on causal rope, remove the snapshot escape hatch from dev startup, and lock the architecture with tests and docs.

Hard no list

  • Do not optimize the full-snapshot runtime instead of replacing it.
  • Do not compute modified lines from Git diff.
  • Do not make save reset causal history.
  • Do not call a full-string root a RopeHead.
  • Do not accept basis-less materialized reads.
  • Do not allow fixture imports into installed product code.
  • Do not treat CAS materializations as authority.

Activity

  1. added
    causal-ropeCausal rope text authority roadmap
    goalpostRoadmap milestone tracker
    text-authorityText authority and storage invariants
    on Jul 6, 2026
  2. coderabbitai commented on Jul 6, 2026

    @coderabbitai
    🔗 Related PRs

    #23 - feat(echo): add Echo release gate witness [closed]
    #27 - feat(echo): wire trusted runtime lifecycle into jedit [closed]
    #135 - Docs: lock Jim causal roadmap [closed]
    #205 - Document graph-backed rope runtime gate [merged]
    #261 - Complete CR-00 snapshot escape hatch guard [merged]


    📝 Issue Planner

    Check the box below or use the @coderabbitai plan command to generate an implementation plan and prompts that you can use with your favorite coding assistant.

    • Create Plan

    🧪 Issue enrichment is currently in open beta.

    You can configure auto-planning by selecting labels in the issue_enrichment configuration.

    To disable automatic issue enrichment, add the following to your .coderabbit.yaml:

    issue_enrichment:
      auto_enrich:
        enabled: false

    💬 Have feedback or questions? Drop into our discord!

  3. added
    enhancementNew feature or request
    work-in-progressCycle or PR is intentionally in progress and not ready to merge
    on Jul 6, 2026
  4. flyingrobots commented on Aug 18, 2026

    @flyingrobots
    OwnerAuthor

    Architecture correction for this roadmap: the causal rope remains Jim-owned
    application law, but the final production editor is Jim.edict running as an
    Echo-realized active observer. TypeScript command handlers, edit planners,
    operation sequencers, and coordinate-derived replaceRangeAsTick requests are
    compatibility migration debt, not target authority.

    Roadmap slices must converge on #295/#301:

    • Jedit/Bijou/native code decodes canonical events, transports artifacts, owns
      raw file/process adapters, and renders disposable projections.
    • Jim.edict owns modes, cursor, selection, registers, pending operators,
      command interpretation, observation requests, operation intents, outcomes,
      and state advancement.
    • Jim-owned Edict lawpacks own rope facts, ReplaceRange, TextWindow, buffer
      creation, checkpoints, results, and typed obstructions.
    • Echo remains generic and must never acquire rope/editor nouns, verbs,
      callbacks, or intrinsics.

    Any checklist item that says "route commands through replaceRangeAsTick" should
    be read as compatibility work unless it explicitly ends with canonical event
    delivery to Jim.edict. Direct generated-client operation conformance is useful
    scaffolding but does not satisfy the final production cutover.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    causal-ropeCausal rope text authority roadmapenhancementNew feature or requestgoalpostRoadmap milestone trackertext-authorityText authority and storage invariantswork-in-progressCycle or PR is intentionally in progress and not ready to merge

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions