Skip to content

Close the Python 4.7 parity gaps in the Rust binary - #7

Merged
IronAdamant merged 1 commit into
mainfrom
cursor/python-parity-fixes-312d
Nov 3, 2026
Merged

IronAdamant merged 1 commit into
mainfrom
cursor/python-parity-fixes-312d

Conversation

@IronAdamant

Copy link
Copy Markdown
Owner

Summary

The Rust binary now covers the Python 4.7 behaviours that the parity review found missing, without giving up the Rust import map or the warm update-maps skip. JSON stays the default CLI output. issues still returns suggest-next actions, and library.md stays the short tree, as skills/run.md already says.

  • Wiki lookup falls back from <file>.wiki.md through docs/wiki, docs, wiki, documentation, and .wiki.
  • Python public names use a tokenizer (__all__ lists, tuples, +=, comments and strings skipped, decorated async def, .pyi). JS/TS exports ignore comments and strings.
  • The daemon polls about every 30s, refreshes maps at most every 600s, writes wikifier.pid, daemon.log, and daemon_heartbeat.json, and supports logs, restart, and install/uninstall (systemd, launchd, Task Scheduler). start refuses only blocked unless --force.
  • init writes the Python starter files and honours --no-copy.
  • record-changes --reasons accepts a JSON object or PATH=REASON lines. MCP accepts a reasons object.
  • Flags: list-paths --depth/--recursive/--max-files, verify-wikis --limit, stale-wikis directory and limit, --directory on bootstrap/health/suggest-next, health --summary/--format, cycles --no-analysis/--max-items.
  • suggest-next emits review_low_confidence_edges when a non-dynamic resolved edge is below 0.65. The count is updated only for files that were parsed.
  • seed-source-hashes records hashes on Green rows and does not change status. heal-stubs defaults to 350 characters.
  • Health seeding follows monitored_paths.txt when that file lists real paths. Absent, empty, or bare . still seeds every mapped file.
  • Pending lines are - path: message. --text prints prose. Cycle JSON includes severity and a reverse-dependency ranking.

scripts/benchmark_parity.sh compares this release build with Python at 24812ef. Results are in scripts/benchmark_results.md.

Benchmark (median ms, 5 runs, min–max)

Machine: Intel Xeon, 4 cores, 15.6 GiB RAM, Linux 6.12.94+, Python 3.12.3, rustc 1.83.0. Large tree is Django django/ + tests/ (2939 Python files).

Command small Python small Rust medium Python medium Rust large Python large Rust
startup 63 (61–66) 2 (1–2) same same same same
cold update-maps 123 (121–126) 8 (7–13) 167 (163–168) 62 (59–73) 12675 (12540–13094) 3142 (3114–3305)
warm update-maps 69 (67–72) 4 (3–5) 73 (72–74) 4 (4–5) 422 (417–433) 246 (243–253)
session-bootstrap 66 (64–67) 2 (1–2) 65 (64–67) 2 (1–2) 270 (269–278) 21 (21–21)
check-changes 64 (62–65) 3 (2–3) 70 (69–75) 5 (5–6) 1232 (1217–1266) 74 (73–76)
health --summary 60 (60–62) 2 (1–2) 60 (59–63) 1 (1–2) 109 (108–114) 8 (8–9)
verify-wikis 60 (60–61) 2 (1–2) 62 (60–67) 1 (1–2) 106 (103–108) 8 (7–8)
cycles 60 (60–61) 2 (1–2) 61 (60–63) 2 (2–2) 63 (61–64) 54 (53–55)

Resolved file edges: small 2/2, medium 44 Python and 98 Rust, Django 9074/9074. Cold peak RSS (kbytes): Python 27544 / 28392 / 97564, Rust 3384 / 4424 / 40012. Release binary 2197456 bytes.

Tests

cargo test — 65 passed. cargo fmt --check and cargo clippy --all-targets -- -D warnings are clean. No TODO, FIXME, todo!, or unimplemented! under src/ or tests/.

Open in Web Open in Cursor 

Wiki lookup, symbol checks, the daemon, init, CLI flags, MCP prompts, and cycle ranking now follow the archived package where that was the intended behaviour. JSON stays the default. scripts/benchmark_parity.sh records a measured comparison with commit 24812ef.

Co-authored-by: Aron Amos <IronAdamant@users.noreply.github.com>
@IronAdamant
IronAdamant merged commit 6496790 into main Nov 3, 2026
6 checks passed
@IronAdamant
IronAdamant deleted the cursor/python-parity-fixes-312d branch November 3, 2026 08:59
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.

2 participants