Skip to content

Document graph-backed rope runtime gate - #205

Merged
flyingrobots merged 16 commits into
mainfrom
design/graph-backed-rope-runtime
Jul 5, 2026
Merged

Document graph-backed rope runtime gate#205
flyingrobots merged 16 commits into
mainfrom
design/graph-backed-rope-runtime

Conversation

@flyingrobots

@flyingrobots flyingrobots commented Jul 4, 2026

Copy link
Copy Markdown
Owner

Summary

  • document the discovery that the current hot text runtime is full-snapshot based, not graph-backed rope authority
  • record the intended Echo-hosted graph-backed rope architecture and why the current runtime is architectural drift
  • add the hard gate and required enhancements before implementation: fixture quarantine, production guard, coordinate semantics, concrete fact shapes, witness-first retention/subtree/materialization checks, and smallest-real-runtime cutover
  • link the active BEARING plan to the graph-backed runtime authority gate

Related

Verification

  • git diff --check
  • npx markdownlint-cli2 docs/BEARING.md docs/design/0149-graph-backed-rope-runtime-discovery.md spec/design-cycle-policy.spec.mjs
  • node --test --test-concurrency=1 spec/design-cycle-policy.spec.mjs
  • ASCII check for touched docs/spec
  • npm run --silent quality

Notes

This PR is intentionally documentation/design only. It does not implement the graph-backed runtime and does not touch PR #204.

@coderabbitai

coderabbitai Bot commented Jul 4, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@flyingrobots, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 35 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 8be4e04e-2a69-47f9-839d-3b6a6b7d0dc7

📥 Commits

Reviewing files that changed from the base of the PR and between 004733e and d2adf58.

📒 Files selected for processing (3)
  • docs/BEARING.md
  • docs/design/0149-graph-backed-rope-runtime-discovery.md
  • spec/design-cycle-policy.spec.mjs

Walkthrough

Adds a new design gate document (docs/design/0149-graph-backed-rope-runtime-discovery.md) describing the architectural drift between jedit's current full-snapshot text runtime and the intended graph-backed rope runtime, specifying coordinate systems, typed fact shapes, retention/materialization rules, and a phased cutover plan.

Changes

Design documentation cohort

Layer / File(s) Summary
Problem statement and motivation
docs/design/0149-graph-backed-rope-runtime-discovery.md
Documents the current full-snapshot mismatch, the original intended graph-backed model, and rationale for why the drift matters.
Cutover gate and fixture fencing
docs/design/0149-graph-backed-rope-runtime-discovery.md
Defines a hard gate blocking further UI work until graph-backed paths exist, and step 1 to rename/fence the full-snapshot fixture with an env guard.
Coordinate systems and typed fact shapes
docs/design/0149-graph-backed-rope-runtime-discovery.md
Specifies byte-offset coordinate rules and typed rope fact shapes (worldline/head/branch/leaf/blob/rewrite/diff/checkpoint/anchor).
Causality, identity, and retention rules
docs/design/0149-graph-backed-rope-runtime-discovery.md
Specifies no-op causality precision, subtree identity preservation, and measurable retention requirements.
Materialization boundaries and witnesses
docs/design/0149-graph-backed-rope-runtime-discovery.md
Specifies materialization read citation requirements and lists witnesses that should drive implementation order.
Minimal runtime scope and evidence/index separation
docs/design/0149-graph-backed-rope-runtime-discovery.md
Defines the smallest real runtime workflow/scope and distinguishes durable facts from rebuildable indexes.
Balance/checkpoint policy and :why target
docs/design/0149-graph-backed-rope-runtime-discovery.md
Defines balance and checkpoint fact semantics and the :why evidence chain acceptance target.
Cutover slices and decision summary
docs/design/0149-graph-backed-rope-runtime-discovery.md
Specifies staged cutover slices, future ideas, anti-patterns, and the final decision plus next work items.

Estimated code review effort: 2 (Simple) | ~12 minutes

Since this is a documentation-only addition with no code paths, control flow, or multi-component interactions to visualize, no sequence diagram is warranted.

Related Issues: None referenced.

Related PRs: None referenced.

Suggested labels: documentation, design-doc

Suggested reviewers: flyingrobots

Poem

A rabbit hopped through rope and byte,
Snapshots fading out of sight,
Graph and blob and head take root,
No-ops stay silent, causally mute,
:why now speaks with evidence bright. 🐇📜

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly reflects the main change: documenting the graph-backed rope runtime gate.
Description check ✅ Passed The description matches the documentation-only graph-backed rope runtime gate changes.

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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/design/0149-graph-backed-rope-runtime-discovery.md`:
- Around line 165-168: Clarify the LineColumn contract by explicitly stating
whether line is 0-based or 1-based, and document how newline normalization is
performed before deriving coordinates. Update the LineColumn interface
documentation in the graph-backed rope runtime discovery spec so adapters can
rely on the same basis when producing line and columnUtf16 values.
- Around line 286-300: The current contract check in the rope runtime discovery
example only compares `debugRopeShape` at one level (`untouchedLeftSubtreeId`
and `untouchedRightSubtreeId`), which is too shallow. Update the
`runtime.debugRopeShape` / `runtime.replaceRangeAsTick` contract example to use
a recursive structural witness that verifies all unaffected spans and subtree
identities, not just the immediate left/right subtrees. Keep the comparison
centered on the `before` and `after` shapes, but assert preservation across the
full untouched structure so the contract remains valid even when deeper
rebalance occurs.
- Around line 159-243: The fact model is currently only described with erased
TypeScript brands and string discriminants, so witnesses cannot rely on a real
runtime shape. In the graph-backed rope runtime section, add a canonical
constructor/validator path for the fact objects referenced by
BufferWorldlineFact, RopeHeadFact, RopeBranchFact, RopeLeafFact, and
TextBlobFact, and specify the runtime tags or payload fields they carry. Keep
the branded aliases as compile-time helpers, but make the design explicitly
define how these facts are created and validated at runtime so inspectors can
target stable object shapes rather than ad hoc strings.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 8d735d37-6bb2-4b16-bb66-8c1488c13a0f

📥 Commits

Reviewing files that changed from the base of the PR and between e93b2e1 and 004733e.

📒 Files selected for processing (1)
  • docs/design/0149-graph-backed-rope-runtime-discovery.md
📜 Review details
⏰ Context from checks skipped due to timeout. (1)
  • GitHub Check: test / docs-release
🧰 Additional context used
📓 Path-based instructions (2)
docs/design/*.md

📄 CodeRabbit inference engine (AGENTS.md)

Use the template from docs/design/TEMPLATE.md for all full cycle designs

Files:

  • docs/design/0149-graph-backed-rope-runtime-discovery.md
**

⚙️ CodeRabbit configuration file

**: # jedit Agent Contract

Git Safety

  • Never amend commits. Make a new commit.
  • Never rebase unless the user explicitly approves it after a concrete explanation.
  • Never force git operations.
  • Draft pull requests are allowed only for design-cycle kickoff or active cycle
    work. Convert them to ready before merge. If draft PRs are unavailable, use a
    normal PR with the work-in-progress label.

Quality Doctrine

These are hard repo rules, not suggestions:

  1. No any.
  2. No unknown.
  3. Hexagonal architecture, strict.
  4. Encoding and decoding happen only at the boundary, inside a port/adapter.
  5. One file equals one runtime truth.
  6. Runtime truth beats compile-time theater.
  7. No ad hoc string comparison in core logic. Prefer instanceof, numeric tags, symbols, or explicit runtime objects.
  8. No magic strings.
  9. No magic numbers.
  10. SOLID.
  11. DRY.
  12. DI.
  13. Red to green.
  14. Tests are spec.
  15. Agent-first.
  16. No file over 500 lines of code.

Structure

  • ARCHITECTURE.md is the canonical repo architecture doctrine.
  • docs/BEARING.md records the current execution gravity.
  • docs/method/process.md is the canonical cycle workflow.
  • docs/method/roadmap-planning.md defines release-gate, roadmap, slice, and
    proof policy for multi-cycle planning.
  • docs/design/TEMPLATE.md is the required template for full cycle designs.
  • docs/design/0034-design-cycle-template-and-lifecycle.md records the policy
    decision that made executable design docs official.
  • docs/design/0024-jedit-powered-by-echo-release-gate.md is the completed
    baseline plan for the first thirty slices proving jedit has an installed
    package/evidence path while Echo remains generic.
  • docs/design/0025-echo-application-hosting-pattern.md is the completed
    post-release-pressure ten-slice plan for proving the reusable Echo
    application-hosting pattern before applying it to Graft, Think, or other apps.
  • docs/design/0026-echo-hosting-hardening-first-twenty.md is th...

Files:

  • docs/design/0149-graph-backed-rope-runtime-discovery.md
🪛 LanguageTool
docs/design/0149-graph-backed-rope-runtime-discovery.md

[uncategorized] ~14-~14: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...The current hot text runtime still uses full text snapshots: - [`src/domain/text-edit-co...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


[uncategorized] ~371-~371: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...ity; - repeated edits do not retain one full text snapshot per edit; - untouched subtree ...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


[grammar] ~533-~533: Ensure spelling is correct
Context: ...int to an actual rope. - Do not make UI truthier than storage truth. - Do not mix cache ...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[style] ~535-~535: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...invalidation with authority mutation. - Do not make compaction destroy explainabil...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~535-~535: ‘by accident’ might be wordy. Consider a shorter alternative.
Context: ... make compaction destroy explainability by accident. ### 16. Treat UI Work As Dependent On...

(EN_WORDINESS_PREMIUM_BY_ACCIDENT)

Comment thread docs/design/0149-graph-backed-rope-runtime-discovery.md
Comment thread docs/design/0149-graph-backed-rope-runtime-discovery.md
Comment thread docs/design/0149-graph-backed-rope-runtime-discovery.md
@flyingrobots

Copy link
Copy Markdown
Owner Author

Self-Code Review

@codex please confirm these findings. I reviewed origin/main...HEAD after a clean worktree precheck and git fetch origin.

Findings

Severity File / lines Type Issue Recommended mitigation prompt
P1 docs/design/0149-graph-backed-rope-runtime-discovery.md:159-243 Runtime truth / design precision The graph fact section still relies on erased TypeScript brands and string discriminants. That is compile-time theater unless the design also defines how facts are constructed, validated, tagged, and rejected at runtime. Witnesses need stable runtime object shapes, not only aliases. Enhance the graph-backed rope runtime discovery doc with a canonical constructor/validator path for BufferWorldlineFact, RopeHeadFact, RopeBranchFact, RopeLeafFact, and TextBlobFact. Keep branded aliases as compile-time helpers, but define runtime tags, payload fields, ID/hash validation, and invalid-fact rejection semantics so inspectors and witnesses can target stable object shapes.
P1 docs/design/0149-graph-backed-rope-runtime-discovery.md:165-178 Coordinate semantics LineColumn does not say whether line is 0-based or 1-based, whether columnUtf16 is 0-based or 1-based, or how newline normalization is handled before deriving coordinates. This is a direct risk to editor/LSP/export adapters because the doc correctly says coordinates are the first gate, then leaves the projected coordinate contract underspecified. Clarify the LineColumn contract in the graph-backed rope runtime discovery doc. State line and column bases explicitly, state that authoritative mutation ranges are half-open UTF-8 byte ranges, and document newline normalization rules for CRLF/CR/LF before line/column projection. Require every projected coordinate to cite the basis head or reading it was derived from.
P2 docs/design/0149-graph-backed-rope-runtime-discovery.md:284-300 Witness strength The untouched-subtree identity witness only compares immediate untouchedLeftSubtreeId and untouchedRightSubtreeId. That is too shallow for a rope contract: a deeper subtree can be rebuilt while the top-level example still appears to pass, and rebalancing can make immediate left/right identities an unstable proof target. Replace the shallow untouchedLeftSubtreeId/untouchedRightSubtreeId witness example with a recursive structural witness over debugRopeShape. Compare before/after shapes by unaffected byte spans and assert every unaffected subtree identity is preserved unless the design explicitly marks a structural maintenance fact explaining a rebalance.
P5 docs/design/0149-graph-backed-rope-runtime-discovery.md:14, docs/design/0149-graph-backed-rope-runtime-discovery.md:371 Markdown prose polish full text snapshots is used as a compound modifier. Use full-text snapshots or rephrase to avoid grammar-tool churn. Tighten the prose by replacing compound adjective uses of "full text snapshots" with "full-text snapshots" where it modifies a following noun, or rephrase the sentence.
P5 docs/design/0149-graph-backed-rope-runtime-discovery.md:530-535 Markdown prose polish The anti-pattern bullets repeatedly start with Do not, and line 533 uses informal truthier. Intent is clear, but this section invites avoidable style noise in future reviews. Polish the anti-pattern list: keep imperative force, but vary the bullet openings and replace "truthier" with "more truthful" or "more authoritative".

Severity breakdown

Severity Count
P1 2
P2 1
P5 2

Verification performed

  • git status --porcelain was clean before review.
  • git fetch origin completed.
  • git diff --check origin/main...HEAD passed.
  • npx markdownlint-cli2 docs/design/0149-graph-backed-rope-runtime-discovery.md passed.
  • npm run --silent quality passed.

Review judgment

Changes requested. The discovery document is directionally correct and worth keeping, but the design gate should not merge while the coordinate contract, runtime fact validation path, and untouched-structure witness remain underspecified.

coderabbitai[bot]
coderabbitai Bot previously approved these changes Jul 4, 2026
@flyingrobots

Copy link
Copy Markdown
Owner Author

Review Fix Summary

Resolved the self-review / CodeRabbit findings in a2171b9.

Finding Resolution
P1 runtime fact model was compile-time-only Added mandatory schemaVersion runtime tags, a constructor/validator path, validation result/error codes, and rules for IDs, references, metrics, hashes, and rejection before admission.
P1 coordinate contract lacked line/column basis and newline rules Defined LineColumn.line as zero-based, columnUtf16 as zero-based UTF-16 code units, CRLF/bare CR/bare LF logical line-break projection, and non-mutating newline projection over stored bytes.
P2 untouched subtree witness was too shallow Replaced immediate left/right subtree checks with recursive compareUntouchedStructure expectations over byte spans and subtree IDs, with retained structural-maintenance evidence as the explicit rebalance escape hatch.
P5 full text compound adjective Replaced reviewed occurrences with full-text where used as a modifier.
P5 anti-pattern prose Reworded the repeated Do not bullets and replaced truthier with more precise storage-authority language.

Local validation after the fix:

  • git diff --check
  • npx markdownlint-cli2 docs/design/0149-graph-backed-rope-runtime-discovery.md
  • ASCII check for the touched doc
  • npm run --silent quality

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 004733e741

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

Comment thread docs/design/0149-graph-backed-rope-runtime-discovery.md
Comment thread docs/design/0149-graph-backed-rope-runtime-discovery.md
Comment thread docs/design/0149-graph-backed-rope-runtime-discovery.md Outdated
Comment thread docs/design/0149-graph-backed-rope-runtime-discovery.md Outdated
Comment thread docs/design/0149-graph-backed-rope-runtime-discovery.md
Comment thread docs/design/0149-graph-backed-rope-runtime-discovery.md
Comment thread docs/design/0149-graph-backed-rope-runtime-discovery.md Outdated
coderabbitai[bot]
coderabbitai Bot previously approved these changes Jul 4, 2026
@flyingrobots

Copy link
Copy Markdown
Owner Author

Resolved the discovered review issues in follow-up commits a2171b9 and a302437.

Area Commit Outcome
Runtime fact validation a2171b9 Added runtime tags, constructors/validators, ID/hash/reference validation, and invalid-fact rejection rules.
Coordinate semantics a2171b9 Defined UTF-8 byte authority plus zero-based LineColumn/UTF-16 projection semantics and newline handling.
Untouched subtree witness a2171b9 Replaced shallow left/right IDs with recursive shape comparison over unaffected spans plus structural-maintenance evidence.
Design-cycle template a302437 Restored full-cycle frontmatter, linked issue #206, current truth, scope, tests, validation, acceptance, and retrospective sections.
Active plan gate a302437 Linked HT-0149 from docs/BEARING.md and made it the immediate runtime authority gate.
Blob byte authority a302437 Added inline/blob-store byte storage shapes and hash/length verification semantics for TextBlobFact.
No-op receipt semantics a302437 Separated no-op/rejected receipts from text-changing TickReceipt; no-op admissions do not mint or reuse text ticks.

Validation run locally:

git diff --check
npx markdownlint-cli2 docs/BEARING.md docs/design/0149-graph-backed-rope-runtime-discovery.md
node --test --test-concurrency=1 spec/design-cycle-policy.spec.mjs
npm run --silent quality

All previously unresolved review threads are now resolved. Latest PR state: checks green, CodeRabbit approved, merge state clean.

@flyingrobots

Copy link
Copy Markdown
Owner Author

Code Lawyer Self-Audit Findings

@codex please confirm these findings before merge.

Severity Source File / Surface Lines Issue Mitigation
P2 Self docs/design/0149-graph-backed-rope-runtime-discovery.md 53-64, 117-128 The full-cycle template requires strong Current Truth claims to cite evidence at specific fully qualified git commit SHAs. The current design packet uses repo-relative links for code and design evidence, so the baseline can drift under the same prose. Pin Current Truth evidence links to the origin/main commit SHA with GitHub blob/<sha>/...#L... URLs and add a deterministic policy test for those pinned anchors.
P3 Self PR metadata PR body Issue #206 was created and linked from the design doc, but PR #205 still has no issue reference in the PR body (closingIssuesReferences is empty). The design acceptance criterion says issue and PR are linked correctly, so GitHub metadata should reflect that relation. Update the PR body with an explicit Related: #206 link after repository fixes land.

I am resolving these now. The first finding will get a red/green docs policy witness and commit; the second is PR metadata and will be resolved by editing the PR body because there is no repository artifact to commit.

@flyingrobots

Copy link
Copy Markdown
Owner Author

Code Lawyer Activity Summary

# Severity Source File / Surface Commit / Action Outcome
1 P2 Self docs/design/0149-graph-backed-rope-runtime-discovery.md / spec/design-cycle-policy.spec.mjs c648469 Added a red/green policy witness requiring HT-0149 Current Truth evidence links to be pinned to fully qualified git SHAs, then pinned the runtime/design evidence links to origin/main SHA e93b2e1a138a762d7a33da6179d3ad8b8b2a9c6e.
2 P3 Self PR #205 metadata PR body edit Added non-closing Refs #206 metadata so the design gate issue is linked from the PR body.

Validation:

git status --porcelain
git fetch origin
git diff origin/main...HEAD
git diff --check
npx markdownlint-cli2 docs/design/0149-graph-backed-rope-runtime-discovery.md spec/design-cycle-policy.spec.mjs
node --test --test-concurrency=1 spec/design-cycle-policy.spec.mjs
npm run check

Local result: npm run check passed with 1098 tests, 1089 passing, 9 skipped, 0 failing; quality regressions: none.

Remote result on c648469: GitHub Actions passed (plan, quality, static / build, test / docs-release, test / misc-fast, check; release gate skipped). All review threads are resolved.

Merge gate remains locked by CodeRabbit prepaid credits exhaustion on the latest head and by insufficient current approvals.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a302437eb5

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

Comment thread docs/design/0149-graph-backed-rope-runtime-discovery.md Outdated
Comment thread docs/design/0149-graph-backed-rope-runtime-discovery.md Outdated
Comment thread docs/design/0149-graph-backed-rope-runtime-discovery.md Outdated
Comment thread docs/design/0149-graph-backed-rope-runtime-discovery.md Outdated
Comment thread docs/design/0149-graph-backed-rope-runtime-discovery.md Outdated
Comment thread docs/design/0149-graph-backed-rope-runtime-discovery.md
coderabbitai[bot]
coderabbitai Bot previously approved these changes Jul 4, 2026
@flyingrobots

Copy link
Copy Markdown
Owner Author

Activity Summary

# Source Severity File Issue Commit Outcome
1 PR thread P2 docs/design/0149-graph-backed-rope-runtime-discovery.md Include checkpoint facts in the validator contract. 84968ee Already fixed locally; thread resolved.
2 PR thread P2 docs/BEARING.md Block the :why sequence on the graph-backed runtime proof. 0113197 Added BEARING witness and made the :why sequence wait for create/read/replace/checkpoint proof.
3 PR thread P2 docs/design/0149-graph-backed-rope-runtime-discovery.md Expose typed facts to the validator. f971560 Added RopeAdmittedFact, typed getFact, and validator return contract.
4 PR thread P2 docs/design/0149-graph-backed-rope-runtime-discovery.md Require kind-specific diff span fields. 63f0c83 Replaced optional-field RopeDiffSpan with equal/delete/insert discriminated variants.
5 PR thread P2 docs/design/0149-graph-backed-rope-runtime-discovery.md Add a hash field before requiring receipt hashing. 06067f0 Added TickReceiptFact.contentHash plus a policy witness.
6 PR thread P2 docs/design/0149-graph-backed-rope-runtime-discovery.md Define maintenance facts before exempting rebuilt subtrees. d2adf58 Added RopeStructuralMaintenanceFact, validator admission, and durable evidence classification.

Validation completed locally:

  • git diff origin/main...HEAD
  • git diff --check origin/main...HEAD
  • npx markdownlint-cli2 docs/BEARING.md docs/design/0149-graph-backed-rope-runtime-discovery.md spec/design-cycle-policy.spec.mjs
  • node --test --test-concurrency=1 spec/design-cycle-policy.spec.mjs
  • npm run --silent quality
  • npm run check (1109 tests, 1100 passed, 9 skipped, 0 failed; quality regressions: none)

All review threads known at the start of this Code Lawyer pass are resolved. No new self-discovered issues were found during the final diff audit.

@flyingrobots
flyingrobots merged commit daf0793 into main Jul 5, 2026
7 of 8 checks passed
@flyingrobots
flyingrobots deleted the design/graph-backed-rope-runtime branch July 5, 2026 05:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant