Skip to content

Author ReplaceRange as Jedit-owned Edict source - #302

Draft
flyingrobots wants to merge 11 commits into
mainfrom
feature/replace-range-edict-source
Draft

flyingrobots wants to merge 11 commits into
mainfrom
feature/replace-range-edict-source

Conversation

@flyingrobots

@flyingrobots flyingrobots commented Aug 23, 2026

Copy link
Copy Markdown
Owner

Goal

Author and prove ReplaceRange.edict as the first Jim-owned text operation,
compiled by Edict and executed by generic Echo machinery. Tracks #296.

Echo must not learn application nouns or verbs. Jim-owned Edict source and
lawpacks own editing semantics. The schema and oracle are not programs.

Plan

  • Publish the canonical lawpack closure through Edict's public authoring boundary.
  • Check in the initial source and application manifest.
  • Emit an independently verified generic package with exact nominal identities.
  • Pin compiler, provider, validation environment, source closure, and artifact chain.
  • Reject substitution and drift, and reproduce byte-identical public builds.
  • Execute freshly built package bytes through the pinned generic pure evaluator.
  • Obtain an independent operational audit of the updated exact head.
  • Author the rope algorithm and implement the general language/runtime capabilities it requires.
  • Prove admitted execution, oracle agreement, Tick/WAL/receipt/reading/recovery evidence.

Current status

The proof gate at 83ab52a3744babb63c8ce15cd94d917012e364a2 now executes the
fresh public-build output, rather than stopping at package verification.

Exact dependencies are deliberately separate:

  • Edict compiler: 3f81f759e921a69b04fe8cf8e62e62f8f3dc7b7e, merged main.
  • Echo provider: 49e9efb68001dfd78563d18bac9359a87671e431, open Echo #724.
  • Echo pure evaluator: 8c725d699241a7e3adee482029031ff6bade25fa, open Echo #726.

The standalone unpublished Rust test host uses only pinned Echo dependencies,
with a committed Cargo lock. It links no native Jedit planner and is not a
product dependency. After validating the independent verifier report and exact
build locks, the driver passes the emitted package bytes and verified pin to
the test host. Literal expectations check both authored conditional branches,
the imported helper, exact output bytes, repeatability, reversed-range refusal,
invalid identity bytes, and pin substitution. A required post-assertion marker
rejects a vacuous zero-test invocation. CI compiles and runs the same host.

The test sources, dependency resolution, and CI changes are included in the
source-closure lock. The executable package and verifier artifacts did not
change. Authoritative compiler/provider/application inputs remain non-mutating
during the proof gate.

Validation at this head:

  • RED: the new runtime-gate test failed after a successful public build because no runtime witness ran.
  • GREEN: all 12 package-chain tests passed, including fresh execution and repeated public-build byte identity.
  • npm run check: 782 Node tests passed, 12 intentional skips, all native Rust suites passed, no quality regressions.
  • The standalone Rust test host passed strict Clippy and formatting checks.
  • git diff --check and git verify-commit HEAD passed.
  • CI for this newly published head is pending; earlier-head CI is not used as proof for it.

This PR remains a draft. The authored source still returns a boundary record,
not a rope rewrite. There is no new graph mutation, Tick settlement, WAL,
recovery evidence, installed application, or production cutover. The new
test-only host does not implement editing semantics or treat the oracle as
executable input. No Echo production code changed in this proof-gate update.

@flyingrobots flyingrobots added the work-in-progress Cycle or PR is intentionally in progress and not ready to merge label Aug 23, 2026
@flyingrobots flyingrobots self-assigned this Aug 23, 2026
@coderabbitai

coderabbitai Bot commented Aug 23, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@flyingrobots

Copy link
Copy Markdown
Owner Author

@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

repo commit
jedit (PR head) a894c7c4c6d150c0fb210d2e0ca4c27bf518b4c7
edict (PR body pin) 3f81f759e921a69b04fe8cf8e62e62f8f3dc7b7e
echo (PR body pin) 49e9efb68001dfd78563d18bac9359a87671e431
edict (my local main) e4fa81dd772a88fa50b5272da627716e7ea56214
echo (my local main) 490134c0753a3df6a74da366cc71c1248764dc5a

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:

  1. No loop-carried result in Edict. crates/edict-syntax/src/compiler.rs builds every bounded for with result: CoreExpr::Const(CoreValue::Null) (~line 1815), and return is rejected inside a bounded-for body (~line 1798). If that is right, a rope traversal that accumulates cannot be expressed in Edict source today, which blocks the "application-owned rope algorithm" half of item 12 on an Edict language change rather than on authoring effort.

  2. No generic pure evaluator in Echo. crates/warp-core/src/edict_target_ir.rs::execute_accepted_edict_echo_target_ir evaluates no program: it checks a single BasisFresh predicate and returns a receipt, never touching the intent body. If that is right, item 12's evaluator half is a new warp-core component, not a wiring task, and item 13 cannot start until it exists.

  3. The current source is a boundary record, not an algorithm. edict/replace-range/src/ReplaceRange.edict is 41 lines: one maxCreatedLeafCount() call, one rangeIsEmpty conditional, one returned record. No traversal.

What would help most

  • Confirm or refute 1 and 2 with file and line, at the heads you actually audited.
  • If 1 is right: the smallest Edict language capability that unblocks the algorithm — general loop-carried result, or something narrower that still expresses replace-range.
  • Whether the maintainer position that Echo must not learn ropes is satisfiable with a generic evaluator, or whether it forces a different split.
  • Anything in items 1-10 that has silently regressed since they were ticked.

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.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 8, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-08T06:02:22.133141Z a894c7c Manual request
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Breezy!

Reviewed commit: a894c7c4c6

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

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".

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

Labels

work-in-progress Cycle or PR is intentionally in progress and not ready to merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant