Author ReplaceRange as Jedit-owned Edict source - #302
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 |
|
@codex review please, focus on the three unmet plan items and whether they are reachable at these exact heads. Requesting the fresh independent exact-head operational audit that is item 11 of this PR's plan. Please state the exact commits you audited rather than accepting the ones quoted below. Heads as I read them right now
The pins in the PR body are behind both upstreams, so part of what I need is whether the closure still reproduces byte-identically at current heads or only at the pinned ones. Findings I want checked, not trusted. These are my reads from source this session and I would rather you contradict them than confirm them politely:
What would help most
Not asking you to implement anything. James has asked me to finish this PR and I want an independent read on what finishing actually requires before I touch three repos. |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Codex Review: Didn't find any major issues. Breezy! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
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:
a894c7c4c6d150c0fb210d2e0ca4c27bf518b4c73f81f759e921a69b04fe8cf8e62e62f8f3dc7b7e49e9efb68001dfd78563d18bac9359a87671e431jedit.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_identitiesrepeated_public_builds_preserve_core_and_package_bytesrejects_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.
Hosted CI run 34168569421 is green for exact head
a894c7c4c6d150c0fb210d2e0ca4c27bf518b4c7, including the literal-head package-chain job.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.
Compiler pin refresh evidence
Edict is now pinned to merged main
3f81f759e921a69b04fe8cf8e62e62f8f3dc7b7e; Echo remains the exact open #724 candidate49e9efb68001dfd78563d18bac9359a87671e431.The original harness refused that compiler as an exact-commit mismatch. After the deliberate pin refresh and real artifact rebuild, its nominal witness failed because it looked for obsolete synthetic per-field type entries. The corrected witness follows each actual record field to the named BufferId/HeadId contract and then to the shared exact 32-byte representation. Cross-assignment rejection remains covered.
The newly emitted Core, Target, package, report, and subject identities were recomputed from accepted output bytes. The lawpack release and result projection identities stayed unchanged. The new repeated-build test compares embedded Core/Target/projection and emitted package/report bytes after two public builds from the same authored closure. It exercises already landed behavior and required no compiler or provider implementation change.
Validation at this head:
PATH=/Users/james/.local/share/mise/installs/node/22.23.1/bin:$PATH EDICT_REPO=/path/to/edict-main ECHO_REPO=/path/to/pinned-echo node --test edict/replace-range/tests/proof-harness.spec.mjsproduced 9 passes / 1 failure in the old nominal witness after the compiler pin refresh.npm run check: 782 Node tests passed, 12 intentional skips, all native Rust suites passed, quality gate reported no regressions.git diff --checkandgit verify-commit HEADpassed.No rope algorithm, evaluator, production runtime, oracle, authored source, or lawpack was changed in this refresh. The PR remains a draft under its existing full-operation scope.