Skip to content

Separate generic graph writes from text MutationPlan evidence #287

Description

@flyingrobots

Classification

Native design debt and misleading authority vocabulary.

Problem

CheckpointPlan currently contains a member named mutation: MutationPlan, even though checkpoint declaration is explicitly required not to mutate text.

MutationPlan also bundles two different concerns:

  1. generic Echo graph read/write footprint plus delta emission; and
  2. text-result evidence such as buffer ID, head ID, byte length, line count, and version.

A checkpoint uses the first concern to write one Jim proposition, but fills the second with a retained basis head and a current buffer version. The name and shape imply a text mutation where none exists and make mixed-coordinate responses easier to construct.

Evidence

Why it matters

Names are part of the authority boundary. Calling every admitted fact write a text mutation weakens the invariant that checkpoint declaration cannot mint a head, rewrite, diff, or text change. The combined structure also encourages unrelated coordinate evidence to travel together.

Constraints

  • This is a structural refactor, not permission to deepen a handwritten inverse or mutation protocol.
  • Preserve generated operation identity, footprints, deltas, receipts, ticks, and WAL behavior.
  • Preserve exact content-addressed fact identities.
  • Keep checkpoint planning visibly non-text-mutating.
  • Prefer a small split over a generalized framework.

Acceptance criteria

  • Extract a neutrally named graph footprint/delta plan containing only graph reads and pending writes.
  • Keep text-mutation result evidence in a type used only by operations that actually create/replace text state.
  • Make CheckpointPlan contain explicit checkpoint-basis evidence and the neutral graph plan.
  • No checkpoint field, method, or test describes the operation as a text mutation.
  • Existing create/replace/checkpoint native and integration witnesses remain green.
  • Add or retain a negative witness proving checkpoint emission contains no RopeHead, RopeRewrite, RopeDiff, or text-node write.
  • No protocol or wire-shape expansion is introduced merely to complete this refactor.

Related

Activity

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 requestsliceImplementable roadmap slicetext-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