Skip to content

feat(worktree): verified reclaim of an owned branch after remove - #174

Open
rmems wants to merge 9 commits into
mainfrom
cursor/verified-worktree-reclaim-6083
Open

rmems wants to merge 9 commits into
mainfrom
cursor/verified-worktree-reclaim-6083

Conversation

@rmems

@rmems rmems commented Sep 15, 2026 •

Copy link
Copy Markdown
Owner

User description

Summary

Merged latest origin/main (b490786) into the RM-831 / #141 reclaim branch.

Conflict classification

Files Classification Resolution
AGENTS.md Simple Kept main’s coordination-first architecture (register + safety boundary); noted deprecated managed create/remove still carry #141 lease identity for reclaim.
README.md Simple Dropped pre-merge duplicate sections; kept main’s RM-1725 collaboration-first README (status table, register flow, commands).
crates/writ/tests/worktree_cli.rs Simple Kept both sides: reclaim regression tests (owned branch + foreign branch) and main’s WRIT_ALLOWED_OWNERS / --allowed-owners tests.
crates/writ-core/src/worktree.rs, lease.rs, … No markers Git auto-merged.

Complicating factors (intent, not merge markers)

These landed on main while this PR still extends deprecated managed lifecycle — product tension to track, not unresolved git conflicts:

  1. RM-1711 / [writ] Retire managed worktree lifecycle; adopt harness-owned checkouts (RM-1711) #199 — Harness-owned checkouts + worktree register are canonical; create/remove/prune are deprecated. This PR still hardens reclaim on the deprecated path (needed until callers migrate).
  2. Allow assigned-worktree local git merge #197 — Local git merge of peer work into an assigned branch is now allowed in policy; orthogonal to reclaim but changes the safety story in docs.
  3. fix(worktree): parse NUL-delimited porcelain registration #172 — Stricter NUL-delimited porcelain parsing merged into worktree.rs alongside reclaim logic (auto-merge succeeded; behavior should stay covered by existing + porcelain tests).
  4. Prior PR follow-ups (unchanged): lazy lease open, fresh-create grant-after-add -b, stricter upstream ancestry, canonical remove paths.

Verification

  • cargo fmt --all
  • cargo clippy --workspace --all-targets -- -D warnings
  • cargo test --workspace — 257 passed

Linear Issue: RM-831

Open in Web Open in Cursor 

Summary by cubic

Makes the create → remove → reclaim cycle durable so hooks can reattach a verified worktree instead of aborting session setup (RM-831). worktree create records a SQLite lease identity; worktree remove releases the lease without deleting the row, and a later create for the same owner/repo/job/branch succeeds only when the lease and live Git checks still prove ownership. Both the worktree base and lease store paths are canonicalized so reclaim identity never crosses sandboxes.

Fail-closed guarantees

  • Foreign, moved, concurrently checked-out, behind, and divergent branches, including nested tracking refs, abort with WORKTREE_RESUME_UNPROVEN and report branch_ref and ownership_evidence.
  • Corrupted lease modes error out instead of decaying to a reclaimable identity; a fresh create grants a lease only after git worktree add -b wins the ref.
  • WAL and a busy timeout make concurrent reclaim fail closed, and release_if_current only releases the exact lease generation observed so a refreshed or regranted lease stays untouched.
  • The lease store opens lazily, so list and prune never create it; commit equality alone is never ownership proof, and residual Git state is left with no automatic rollback.

Written for commit 38b8bb8. Summary will update on new commits.

Review in cubic


CodeAnt-AI Description

Safely reclaim previously released worktrees and isolate lease records

What Changed

  • A worktree removed by its owner can be recreated on the same branch and start commit.
  • Branches without matching ownership evidence are rejected without deletion, with residual branch and ownership details reported.
  • Lease records use the selected worktree sandbox, preventing reclaim identity from crossing isolated environments.
  • Concurrent lease operations wait for up to five seconds and use reliable journal storage instead of failing immediately.

Impact

✅ Reliable owned-branch reclaim
✅ No destructive cleanup of foreign branches
✅ Isolated test and operator worktree state

💡 Usage Guide

Checking Your Pull Request

Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.

Talking to CodeAnt AI

Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:

@codeant-ai ask: Your question here

This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.

Example

@codeant-ai ask: Can you suggest a safer alternative to storing this secret?

Preserve Org Learnings with CodeAnt

You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:

@codeant-ai: Your feedback here

This helps CodeAnt AI learn and adapt to your team's coding style and standards.

Example

@codeant-ai: Do not flag unused imports.

Retrigger review

Ask CodeAnt AI to review the PR again, by typing:

@codeant-ai: review

Check Your Repository Health

To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.

Record a durable SQLite lease identity on create and release it without
deleting the row on remove, so the same owner/repo/job/branch can be
reattached at the original start commit. Foreign, moved, concurrently
checked-out, and otherwise unproven branches stay fail-closed with
residual evidence and no automatic rollback.

Closes #141
Refs #124

Co-authored-by: Raul Cardenas Montoya <montoyaraul34@gmail.com>
@linear-code

linear-code Bot commented Sep 15, 2026

Copy link
Copy Markdown
Contributor

RM-831

@coderabbitai

coderabbitai Bot commented Sep 15, 2026 •

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 33 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: Repository: rmems/writ/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: e3b448c7-f79f-4283-87ae-122567c49226
📥 Commits

Reviewing files that changed from the base of the PR and between d79311c and 38b8bb8.

📒 Files selected for processing (4)
  • crates/writ-core/src/lease.rs
  • crates/writ-core/src/paths.rs
  • crates/writ-core/src/worktree.rs
  • crates/writ/tests/worktree_cli.rs
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

codescene-access[bot]

This comment was marked as outdated.

@amazon-q-developer amazon-q-developer 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.

This PR implements verified worktree reclaim with comprehensive ownership checks and durable lease tracking. The implementation is well-designed with strong security guarantees:

Key Strengths:

  • SQLite-backed lease store provides durable ownership identity across create/remove/reclaim cycles
  • Multi-layered ownership verification (lease identity, branch commit, worktree registration, upstream checks)
  • Fail-closed policy rejects unproven branches (foreign jobs, moved commits, concurrent checkouts)
  • Extensive test coverage validates the happy path and all rejection scenarios
  • Sandbox protections prevent symlink escapes and path traversal

Implementation Quality:

  • Proper separation of concerns between LeaseStore (persistence) and WorktreeManager (orchestration)
  • Clear enum-based state machine (CreateMode::Fresh/Reclaim/AlreadyPresent)
  • Comprehensive error reporting with residual state inspection
  • No automatic cleanup of ambiguous state (correct fail-safe behavior)

The code correctly implements the load-bearing #141 requirement for Claude Code WorktreeCreate to reuse verified worktrees without aborting session setup. No blocking issues found.


You can now have the agent implement changes and create commits directly on your pull request's source branch. Simply comment with /q followed by your request in natural language to ask the agent to make changes.

@codacy-production

codacy-production Bot commented Sep 15, 2026 •

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

🟢 Metrics 4 complexity · 4 duplication

Metric Results
Complexity 4
Duplication 4

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@codecov

codecov Bot commented Sep 15, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 89.13793% with 63 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
crates/writ-core/src/worktree.rs 87.09% 63 Missing ⚠️

📢 Thoughts on this report? Let us know!

Reject nested tracking refs such as origin/evil/{branch}, report residual
identity on unexpected-upstream failures, and set a SQLite busy timeout
plus WAL so concurrent reclaim does not fail open or abort without evidence.

Refs #141

Co-authored-by: Raul Cardenas Montoya <montoyaraul34@gmail.com>
@rmems
rmems marked this pull request as ready for review September 15, 2026 05:22
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 15, 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-10-03T10:45:02.458774Z 38b8bb8 New commits
🔒 Security Review ✅ Completed 2026-09-15T05:40:48.871876Z fbf8c5b Draft marked ready
ℹ️ 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.

@codeant-ai

codeant-ai Bot commented Sep 15, 2026 •

Copy link
Copy Markdown

🤖 CodeAnt AI — Review Status

Status Commit Started (UTC) Finished (UTC)
✅ Incremental review completed c504062 Oct 03, 2026 · 10:26 10:26
✅ Incremental review completed 19d9a7e Sep 21, 2026 · 08:25 08:25
✅ Incremental review completed 636ce2c Sep 19, 2026 · 21:39 21:39
✅ Incremental review completed d7bbfe8 Sep 17, 2026 · 23:29 23:30
✅ Reviewed your PR fbf8c5b Sep 15, 2026 · 05:22 05:25

@codeant-ai

codeant-ai Bot commented Sep 15, 2026

Copy link
Copy Markdown

Thanks for using CodeAnt! 🎉

We're free for open-source projects. if you're enjoying it, help us grow by sharing.

Share on X ·
Reddit ·
LinkedIn

codescene-access[bot]

This comment was marked as outdated.

@codeant-ai codeant-ai Bot added the size:XXL This PR changes 1000+ lines, ignoring generated files label Sep 15, 2026
Comment thread crates/writ-core/src/lease.rs
@codeant-ai

codeant-ai Bot commented Sep 15, 2026

Copy link
Copy Markdown

CodeAnt Nitpicks

2 code suggestions

1. Opening a bare filename attempts to create directory &quot;&quot;, which fails before SQLite opens the valid current-directory database path.

Io error · crates/writ-core/src/lease.rs:118-124


2. The nonexistent-path fast path skips sandbox validation and can release any matching lease for an arbitrary path before checking the configured base.

Security · crates/writ-core/src/worktree.rs:288-291

@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: fbf8c5b42b

ℹ️ 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 crates/writ-core/src/worktree.rs Outdated
Comment thread crates/writ-core/src/worktree.rs Outdated
Comment thread crates/writ-core/src/worktree.rs Outdated
Comment thread crates/writ-core/src/lease.rs Outdated
Comment thread crates/writ-core/src/worktree.rs Outdated
Comment thread crates/writ-core/src/worktree.rs Outdated
…ove path

Unrecognized/corrupted lease modes now surface as Error::LeaseStore instead
of decaying to a reclaimable Unassigned lease: LeaseMode::parse returns Result
and lease_from_row maps the failure to a rusqlite conversion error so the
existing query_lease wrapping converts it.

WorktreeManager::remove canonicalizes the incoming path up front (nearest
existing ancestor for gone leaves) and enforces sandbox containment before any
lease release, including the non-existent-path fast path. The lease release,
git remove arg, and parent cleanup all use the canonical spelling grant stored,
and stale git worktree registrations for in-sandbox gone worktrees are pruned
before release so a later reclaim is not blocked.
…ease store

resume_upstream_mismatch now checks the upstream COMMIT relationship after the
ref-name check: reclaim is rejected when the published branch is behind or
divergent from its configured upstream and allowed only when equal or strictly
ahead by job-owned commits (AGENTS.md). It compares against the local
remote-tracking state via git merge-base --is-ancestor and never fetches inside
core, so tests use local repos.

create_with_request grants the Fresh-create lease only after git worktree add -b
wins the ref, so a job that loses the race (or whose add fails) leaves no
ownership-proving lease. Reclaim/AlreadyPresent still grant before mutation since
they require an already-proven lease.

WorktreeManager opens the writable SQLite lease store lazily via a new leases()
accessor, so worktree list and prune no longer require (or create) a writable
lease store. lease_store() now returns Result. prove_resume is unchanged; its
CodeScene complexity is an accepted code-health biomarker rather than a behavior
bug. Adds tests for behind/divergent/ahead/equal upstream reclaim, the
race-loser and failed-fresh no-lease invariants, and list/prune not creating
leases.db.
@codereviewbot-ai

Copy link
Copy Markdown

🤖 Review skipped: Repository Owner rate limit exceeded. Free accounts are limited to 3 reviews per 4 hours across all repositories. Upgrade to a paid plan for unlimited reviews.

rmems commented Sep 17, 2026

Copy link
Copy Markdown
Owner Author

Bot comments addressed

chatgpt-codex-connector (6 inline) — all FIXED

  1. Grant ownership only after winning branch creation (P1): fresh-create path now grants the lease only after git worktree add -b wins the ref, so a race loser / failed add leaves no ownership-proving lease.
  2. Verify upstream commit relationship before reclaim (P1): after the ref-name check, the local branch commit is now compared against the @{upstream} tracking commit via git merge-base --is-ancestor, rejecting behind/divergent and allowing equal/ahead (no network fetch, per AGENTS.md).
  3. Clear stale worktree registration before returning (P2): gone-path fast path now runs best-effort git worktree prune before releasing the lease.
  4. Reject unrecognized lease modes (P1): LeaseMode::parse returns Result and fails closed as Error::LeaseStore on unknown/corrupted modes instead of decaying to reclaimable Unassigned.
  5. Avoid opening a writable lease store for read-only commands (P2): lease store now opens lazily via OnceLock; list/prune never open it (tests assert leases.db is not created).
  6. Canonicalize path before releasing its lease (P2): remove canonicalizes the target and enforces sandbox containment before any lease release, using the canonical spelling for the git arg, cleanup, and release_by_path.

codeant-ai

codescene-access (2 biomarkers)

  • prove_resume complexity and test assertion-block size: accepted code-health biomarkers. Extracting helpers from prove_resume risked altering the exact PolicyCode/error messages callers and tests depend on; new upstream logic was factored into separate helpers so it did not inflate prove_resume.

Not actioned (correct)

  • Codex attribution-trailer demand: not applicable — per AGENTS.md those trailers apply only to Codex-authored commits; these commits are Cursor-authored, so rewriting attribution would be wrong.

Verification (Linux)

cargo fmt --all -- --check clean · cargo clippy --workspace --all-targets -- -D warnings clean · cargo test --workspace 168 core unit + 27 + 8 integration pass, 0 failures (baseline 155). New tests cover behind/divergent/ahead/equal reclaim, race loser, failed fresh create, lazy lease store, and fail-closed mode parsing.

codescene-access[bot]

This comment was marked as outdated.

@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: d7bbfe81e7

ℹ️ 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 crates/writ-core/src/worktree.rs
Comment thread crates/writ-core/src/worktree.rs Outdated
Comment thread crates/writ-core/src/worktree.rs Outdated
Comment thread crates/writ-core/src/worktree.rs
Comment thread crates/writ-core/src/worktree.rs Outdated
Comment thread crates/writ-core/src/worktree.rs Outdated
Comment thread crates/writ-core/src/worktree.rs
@rmems rmems self-assigned this Sep 19, 2026
Resolve conflicts by keeping Phase 1 hook/install modules and PR-import
worktree paths from main while preserving #141 reclaim diagnostics,
lease-store hardening (WAL, busy timeout, fail-closed mode parse), isolated
lease path beside custom worktree bases, and combined CLI/integration tests.

Co-authored-by: Raul Cardenas Montoya <montoyaraul34@gmail.com>
@codeant-ai codeant-ai Bot added size:L This PR changes 100-499 lines, ignoring generated files and removed size:XXL This PR changes 1000+ lines, ignoring generated files labels Sep 19, 2026
codescene-access[bot]

This comment was marked as outdated.

Integrate RM-1725 README/AGENTS collaboration-first docs and owner
allowlist CLI tests with #141 reclaim coverage. worktree.rs and lease.rs
auto-merged cleanly.

Co-authored-by: Raul Cardenas Montoya <montoyaraul34@gmail.com>
codescene-access[bot]

This comment was marked as outdated.

@rmems rmems added enhancement New feature or request core safety rust labels Oct 1, 2026 — with Cursor
codescene-access[bot]

This comment was marked as outdated.

@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: c504062e8e

ℹ️ 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 crates/writ-core/src/paths.rs Outdated
Comment thread crates/writ-core/src/worktree.rs Outdated
Amp-Thread-ID: https://ampcode.com/threads/T-01a1014a-4857-70cd-9baf-7f02a1acdd6a
Co-authored-by: Raul Cardenas Montoya <montoyaraul34@gmail.com>
codescene-access[bot]

This comment was marked as outdated.

Co-authored-by: Raul Cardenas Montoya <montoyaraul34@gmail.com>
Amp-Thread-ID: https://ampcode.com/threads/T-01a1014a-4857-70cd-9baf-7f02a1acdd6a

@codescene-access codescene-access 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.

Gates Failed
Prevent hotspot decline (1 hotspot with Lines of Code in a Single File, Low Cohesion, Complex Method, Complex Conditional, Large Method)
Enforce critical code health rules (1 file with Low Cohesion)
Enforce advisory code health rules (1 file with Lines of Code in a Single File, Complex Method, Complex Conditional, Large Method)

Our agent can fix these. Install it.

Gates Passed
3 Quality Gates Passed

Reason for failure
Prevent hotspot decline Violations Code Health Impact
worktree.rs 5 rules in this hotspot 9.69 → 6.93 Suppress
Enforce critical code health rules Violations Code Health Impact
worktree.rs 1 critical rule 9.69 → 6.93 Suppress
Enforce advisory code health rules Violations Code Health Impact
worktree.rs 4 advisory rules 9.69 → 6.93 Suppress

See analysis details in CodeScene

Quality Gate Profile: Pay Down Tech Debt
Install CodeScene MCP: safeguard and uplift AI-generated code. Catch issues early with our IDE extension and CLI tool.

@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: 38b8bb8f64

ℹ️ 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 on lines 260 to +261
add_worktree(&request, &worktree_path, CommitId(&start_commit), false)?;
leases.grant(grant)?;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Secure the lease before creating the worktree

If git worktree add -b succeeds but the following SQLite grant fails—for example because a concurrent registration wins the lease, the busy timeout expires, or storage errors—the command returns an error after leaving a live worktree and branch with no durable ownership row. A retry then rejects that branch because prove_resume cannot find lease evidence, while status also cannot report its writer; use an exclusive provisional grant or otherwise reconcile a failed post-add grant without leaving untracked ownership.

AGENTS.md reference: AGENTS.md:L138-L141

Useful? React with 👍 / 👎.

Comment on lines +115 to +117
Command::new(env!("CARGO_BIN_EXE_writ"))
.env("WRIT_WORKTREE_BASE", root.join("worktrees"))
.args(["--json", "worktree", "remove", path.to_str().unwrap()])

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Point the remove helper at the test lease store

writ_create sets WRIT_LEASE_PATH to <root>/leases.db, but this helper sets only the worktree base; now that the default lease path is explicitly independent of WRIT_WORKTREE_BASE, the remove subprocess opens a different database. Consequently the reclaim test passes while the original row remains WRITER_LOCKED—reclaim accepts that mode—so it does not test the intended release transition and may also create or touch the developer's default state database.

AGENTS.md reference: AGENTS.md:L138-L140

Useful? React with 👍 / 👎.

Comment on lines +693 to +697
fn lease_repo_matches(lease: &Lease, repo_root: &Path) -> bool {
canonicalize_for_tools(Path::new(&lease.repo))
.ok()
.zip(canonicalize_for_tools(repo_root).ok())
.is_some_and(|(stored, requested)| stored == requested)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Normalize repository identity across lease writers

The new comparison treats the canonical working-tree root as the repository identity, but CheckoutRegistry::register stores the canonical --git-common-dir in the same lease.repo field. Thus a lease written by the canonical register/hook path never matches a managed-create request for that same repository (/repo/.git versus /repo): same-job reclaim is rejected, while an absent branch owned by a registered foreign job can be misclassified as fresh. Store and compare the Git common directory consistently across both lease writers.

AGENTS.md reference: AGENTS.md:L138-L140

Useful? React with 👍 / 👎.

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

Labels

core enhancement New feature or request rust safety size:L This PR changes 100-499 lines, ignoring generated files

Projects

Status: Backlog

Development

Successfully merging this pull request may close these issues.

4 participants