Author ReplaceRange as Jedit-owned Edict source - #302
Draft
flyingrobots wants to merge 9 commits into
Draft
Conversation
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This was referenced Aug 23, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Goal
Author and prove
ReplaceRange.edictas the first Jedit-owned text operation,compiled by Edict and ultimately realized by Echo without moving rope semantics
into Echo or TypeScript.
Tracks #296.
Plan
jedit.text@1lawpack closure through Edict's public authoring boundary.ReplaceRange.edictsource and application manifest.BufferIdandHeadIdcontracts.Current status
The repaired package-proof candidate is published at:
a6673521699259abdd27be10f7c885b5c634a86739a796de04b3400f569880da06878da50d8ed0ee49e9efb68001dfd78563d18bac9359a87671e431jedit.text@1now exports deliberate nominalBufferIdandHeadIdcontracts over one exact 32-byte representation. Edict preserves their contract
coordinates in Core and refuses cross-assignment across the imported lawpack
boundary. Echo's lowerer and verifier consume the generic nominal Core form
without acquiring any Jedit vocabulary.
The raw Echo verifier report remains a separately identified artifact. Jedit's
canonical-JSON evidence envelope binds that report and its exact executable
subject to the provider release, verifier component, verifier contract, target
profile, report ABI, diagnostic ABI, and outcome. Changing only the verifier
identity changes the transitional
VerificationReportId.The toolchain and build locks pin exact Rust, Node, npm, Edict, Echo, provider,
cbor-x, package, lockfile, workflow, source, lawpack, Core, Target IR,projection, executable-package, report-artifact, verifier-evidence, and
executable-subject identities. Validation uses Edict's non-mutating
checkOnlypublication boundary and snapshots authoritative inputs before andafter the build.
Permanent local witnesses are green:
rejects_non_git_toolchain_inputsrejects_wrong_commit_toolchain_inputslawpack_check_only_rejects_drift_without_repairing_itrejects_package_whose_recomputed_identity_differs_from_report_subjectpreserves_nominal_exact_length_buffer_and_head_identitiesrejects_buffer_id_head_id_substitutionverification_report_identity_is_verifier_specificrejects_drifted_build_and_executable_subject_locksrejects_drifted_executable_subject_lockrequired_ci_executes_the_exact_package_chainThe dedicated package-chain job now checks out and asserts the literal pull
request head. Ordinary matrix jobs remain separate integration evidence.
Current-head GitHub CI is green at
a6673521699259abdd27be10f7c885b5c634a867.This remains a Draft and is not a completed text mutation. No Echo evaluator
runs, no graph or rope is mutated, and no Tick is settled. The source does not
invoke the native Jedit planner, construct a caller-authored patch, or treat the
schema/oracle as executable input. Echo remains free of Jim, Jedit, rope,
buffer, range, and editor semantics.