docs(pacquet): remove TypeScript-code references from comments and document the parity paradigm#12737
Conversation
Many permalinks in pacquet's Rust comments and doc comments returned HTTP 404. The causes, found by checking every link: - Commit SHAs that were never on the default branch (rebased or squashed away) or hallucinated outright, e.g. 094aa6e57b and f2981a316. - Paths that pre-dated upstream refactors: the pnpm11/ move (pnpm/pnpm fc2f339), pkg-manager/core to installing/deps-installer, packages/types to core/types, find-packages to workspace/projects-reader, headless to installing/deps-restorer, and more. - Branch, HEAD, and ref-less links (blob/main/..., blob/HEAD/..., one with the SHA omitted entirely) that drifted once files moved. - Packages that migrated to other repositories: env-replace and the path-extender family to pnpm/components; is-subdir, next-path, parse-npm-tarball-url, and encode-registry to their canonical repos. Every link now resolves (verified 200) and points at a commit that is part of its repository's default branch, resolved from the branch tip. Line anchors were checked against that commit's content and preserved. This is a comment-only change; no code is affected. Out of scope and left as-is: the mock-registry package metadata under pnpr/.fixtures (it mirrors what each package actually published) and the fake repository_to_web_url inputs in the repo command tests. pacquet/AGENTS.md now states the underlying rule explicitly: pin a permalink to a commit that is already on the default branch, never a local or unmerged SHA, since such a commit can be garbage-collected and 404 even though a SHA was cited. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0176j9z5mqFgFHRKhsusR3co
|
Important Review skippedToo many files! This PR contains 416 files, which is 266 over the limit of 150. To get a review, narrow the scope: Upgrade to a paid plan to raise the limit. ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (416)
You can disable this status message by setting the Use the checkbox below for a quick retry:
📝 WalkthroughWalkthroughAdds guidance to ChangesDocumentation permalink hygiene
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~3 minutes Possibly related issues
Possibly related PRs
Suggested labels
Suggested reviewers
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
Micro-Benchmark ResultsLinux |
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
pacquet/crates/package-manager/src/create_virtual_dir_by_snapshot.rs (1)
61-69: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick winUpdate the
removeObsoleteChildpermalink as well
5e47dd5e59is not a reachable commit onorigin/main, so theremoveObsoleteChilddoc link still points at a dead target. Update it to the same pinned SHA used by the adjacent reference.🤖 Prompt for 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. In `@pacquet/crates/package-manager/src/create_virtual_dir_by_snapshot.rs` around lines 61 - 69, The `removeObsoleteChild` documentation link in `create_virtual_dir_by_snapshot` points to an unreachable commit, so update that permalink to the same pinned SHA used by the adjacent `linkAllModules` reference. Keep the existing comment structure but replace the stale GitHub target in the `removeObsoleteChild` note so both upstream references resolve consistently.Source: Path instructions
🤖 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 `@pacquet/crates/package-manager/src/dependencies_graph_to_lockfile.rs`:
- Line 354: The `DEPENDENCIES_FIELDS` documentation link in
`dependencies_graph_to_lockfile.rs` uses a pinned SHA that is not reachable from
upstream main, so update that permalink to a commit that exists on the upstream
pnpm main branch and keep it consistent with the other reference links in this
area.
---
Outside diff comments:
In `@pacquet/crates/package-manager/src/create_virtual_dir_by_snapshot.rs`:
- Around line 61-69: The `removeObsoleteChild` documentation link in
`create_virtual_dir_by_snapshot` points to an unreachable commit, so update that
permalink to the same pinned SHA used by the adjacent `linkAllModules`
reference. Keep the existing comment structure but replace the stale GitHub
target in the `removeObsoleteChild` note so both upstream references resolve
consistently.
🪄 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: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 041fc48d-27f8-4de3-9c99-db83ab2d01ed
📒 Files selected for processing (60)
pacquet/AGENTS.mdpacquet/crates/cli/src/cli_args/fetch.rspacquet/crates/cli/src/cli_args/pack_app/tests.rspacquet/crates/cli/src/cli_args/setup/path_extender.rspacquet/crates/cli/src/cli_args/setup/path_extender/posix.rspacquet/crates/cli/src/cli_args/setup/path_extender/posix/tests.rspacquet/crates/cli/src/cli_args/setup/path_extender/windows.rspacquet/crates/cli/src/cli_args/why.rspacquet/crates/cli/src/config_deps.rspacquet/crates/cli/tests/inject_workspace_packages.rspacquet/crates/cli/tests/lifecycle_scripts.rspacquet/crates/config/src/defaults/tests.rspacquet/crates/config/src/lib.rspacquet/crates/config/src/store_path.rspacquet/crates/deps-path/src/link_path_to_peer_version.rspacquet/crates/engine-runtime-deno-resolver/src/read_deno_assets.rspacquet/crates/env-installer/src/errors.rspacquet/crates/env-installer/src/install_config_deps.rspacquet/crates/env-installer/src/lib.rspacquet/crates/env-installer/src/parse_integrity.rspacquet/crates/env-installer/src/prune.rspacquet/crates/env-installer/src/resolve_and_install_config_deps.rspacquet/crates/env-installer/src/resolve_optional_subdeps.rspacquet/crates/env-installer/src/verify_env_lockfile.rspacquet/crates/env-replace/src/lib.rspacquet/crates/executor/src/lifecycle.rspacquet/crates/fs/src/is_subdir.rspacquet/crates/hooks/src/finder.rspacquet/crates/hooks/src/lib.rspacquet/crates/lockfile/src/resolution.rspacquet/crates/package-manager/src/build_resolution_verifiers.rspacquet/crates/package-manager/src/create_symlink_layout.rspacquet/crates/package-manager/src/create_symlink_layout/tests.rspacquet/crates/package-manager/src/create_virtual_dir_by_snapshot.rspacquet/crates/package-manager/src/dependencies_graph_to_lockfile.rspacquet/crates/package-manager/src/install.rspacquet/crates/package-manager/src/install/tests.rspacquet/crates/package-manager/src/install_frozen_lockfile.rspacquet/crates/package-manager/src/install_with_fresh_lockfile.rspacquet/crates/package-manager/src/safe_join_modules_dir.rspacquet/crates/package-manager/src/update_project_manifest_object.rspacquet/crates/package-manager/src/virtual_store_layout.rspacquet/crates/package-manager/src/virtual_store_layout/tests.rspacquet/crates/registry/src/package.rspacquet/crates/registry/src/package_version.rspacquet/crates/reporter/src/lib.rspacquet/crates/resolving-deps-resolver/src/dependencies_graph.rspacquet/crates/resolving-deps-resolver/src/resolve_dependency_tree.rspacquet/crates/resolving-deps-resolver/src/resolve_importer.rspacquet/crates/resolving-deps-resolver/src/resolve_peers.rspacquet/crates/resolving-deps-resolver/src/tests.rspacquet/crates/resolving-deps-resolver/src/validate_dependency_alias.rspacquet/crates/resolving-npm-resolver/src/create_npm_resolution_verifier.rspacquet/crates/resolving-npm-resolver/src/mirror.rspacquet/crates/resolving-npm-resolver/src/parse_bare_specifier.rspacquet/crates/resolving-npm-resolver/tests/chain.rspacquet/crates/resolving-resolver-base/src/resolve.rspacquet/crates/store-dir/src/check_pkg_files_integrity.rspacquet/crates/store-dir/src/project_registry.rspacquet/crates/workspace-manifest-writer/src/lib.rs
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #12737 +/- ##
==========================================
- Coverage 85.24% 85.24% -0.01%
==========================================
Files 407 407
Lines 61882 61864 -18
==========================================
- Hits 52753 52737 -16
+ Misses 9129 9127 -2 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
The removeObsoleteChild doc link in create_virtual_dir_by_snapshot cited pnpm/pnpm commit 5e47dd5, which resolves on GitHub (kept alive by a pull request ref) but is not an ancestor of origin/main — the off-main rot this PR's AGENTS.md guidance warns about. Repinned to a6f303c (current main HEAD), where the removeObsoleteChild pass in linkAllModules sits at link.ts#L575, matching the adjacent linkAllModules citation. The sibling DEPENDENCIES_FIELDS link at 097983f was flagged in the same review but is a false positive: 097983f is reachable from origin/main (git merge-base --is-ancestor 097983f origin/main exits 0), so it is left unchanged. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0176j9z5mqFgFHRKhsusR3co
Integrated-Benchmark Report (Linux)Commit: Each scenario reports direct installs and pnpr installs. Bencher consumes pacquet@HEAD and pnpr@HEAD. Scenario: Isolated linker: fresh restore, cold cache + cold store
BENCHMARK_REPORT.json{
"results": [
{
"command": "pacquet@HEAD",
"mean": 4.156339603179999,
"stddev": 0.17220575797267546,
"median": 4.1145284668799995,
"user": 3.8706933,
"system": 3.4673080999999994,
"min": 3.9720638398799997,
"max": 4.52923502088,
"times": [
4.28316885588,
4.00007367688,
4.20616720388,
4.52923502088,
4.27379509088,
4.09333258388,
3.99479196588,
3.9720638398799997,
4.13572434988,
4.07504344388
]
},
{
"command": "pacquet@main",
"mean": 4.15940008498,
"stddev": 0.17104462533076548,
"median": 4.06655428088,
"user": 3.8442272,
"system": 3.4506460999999993,
"min": 3.98793480888,
"max": 4.37871674388,
"times": [
4.33510167588,
4.36746630888,
4.09058139488,
4.04252716688,
4.33829632888,
3.98793480888,
4.37871674388,
3.99088607288,
4.0309780888799995,
4.0315122598799995
]
},
{
"command": "pnpr@HEAD",
"mean": 2.2077562073799997,
"stddev": 0.15055231864961408,
"median": 2.14106700538,
"user": 2.618588,
"system": 2.9660077999999994,
"min": 1.99285147688,
"max": 2.42683812788,
"times": [
2.09363436088,
2.12263450688,
2.15949950388,
1.99285147688,
2.42683812788,
2.34159614888,
2.1191514208799997,
2.3633782968799997,
2.36376860188,
2.09420962888
]
},
{
"command": "pnpr@main",
"mean": 2.17292269778,
"stddev": 0.12580540929247483,
"median": 2.21649770338,
"user": 2.6135494,
"system": 2.9538523999999993,
"min": 1.95614979888,
"max": 2.35756229088,
"times": [
2.22366777988,
2.04732201288,
2.35756229088,
1.95614979888,
2.17076725388,
2.22582070188,
2.29143146488,
2.22104388488,
2.02351026788,
2.2119515218799997
]
}
]
}Scenario: Isolated linker: fresh restore, hot cache + hot store
BENCHMARK_REPORT.json{
"results": [
{
"command": "pacquet@HEAD",
"mean": 0.62848117,
"stddev": 0.01130727613686472,
"median": 0.6279707105,
"user": 0.35526792,
"system": 1.3302139,
"min": 0.6101432685,
"max": 0.6455239915,
"times": [
0.6455239915,
0.6101432685,
0.6299968315,
0.6259445895,
0.6388255635,
0.6190519205,
0.6250593175,
0.6404999035,
0.6331673265,
0.6165989875
]
},
{
"command": "pacquet@main",
"mean": 0.6451001253,
"stddev": 0.0182262584937619,
"median": 0.642076985,
"user": 0.37519412,
"system": 1.3194316999999998,
"min": 0.6220089295,
"max": 0.6826002275,
"times": [
0.6359879865,
0.6327415025,
0.6518453525,
0.6297440525,
0.6619417585,
0.6537351015,
0.6826002275,
0.6322303585,
0.6220089295,
0.6481659835
]
},
{
"command": "pnpr@HEAD",
"mean": 0.6974514938999999,
"stddev": 0.029661469417804977,
"median": 0.6954800235,
"user": 0.37923031999999995,
"system": 1.3532593,
"min": 0.6560244735,
"max": 0.7568479235,
"times": [
0.6746534505,
0.6964052305,
0.7111081465,
0.6560244735,
0.6945548165,
0.7274257935,
0.6804000365,
0.6710750005,
0.7060200675,
0.7568479235
]
},
{
"command": "pnpr@main",
"mean": 0.6872200327,
"stddev": 0.03654961413339434,
"median": 0.6758771555,
"user": 0.38380942,
"system": 1.3419009000000002,
"min": 0.6622582635,
"max": 0.7872669705,
"times": [
0.6772166635,
0.6778623975,
0.6745376475,
0.7008188325,
0.6622582635,
0.6671342295,
0.6741199925,
0.6773464615,
0.7872669705,
0.6736388685
]
}
]
}Scenario: Isolated linker: fresh install, cold cache + cold store
BENCHMARK_REPORT.json{
"results": [
{
"command": "pacquet@HEAD",
"mean": 4.18031203892,
"stddev": 0.04207543044877014,
"median": 4.1785931099199995,
"user": 3.7290388400000003,
"system": 3.3287314599999993,
"min": 4.13012172442,
"max": 4.244627969420001,
"times": [
4.18820867042,
4.244627969420001,
4.2323648384200006,
4.21856420142,
4.144264482420001,
4.16897754942,
4.14852694142,
4.19578202142,
4.13012172442,
4.131681990420001
]
},
{
"command": "pacquet@main",
"mean": 4.17595785662,
"stddev": 0.03911470931124783,
"median": 4.18244509292,
"user": 3.7311644400000006,
"system": 3.31336266,
"min": 4.1215811244200005,
"max": 4.2597131934200005,
"times": [
4.14232458642,
4.1331415514200005,
4.18083158942,
4.19389711442,
4.1215811244200005,
4.18985965642,
4.18772583742,
4.18405859642,
4.16644531642,
4.2597131934200005
]
},
{
"command": "pnpr@HEAD",
"mean": 2.13502766302,
"stddev": 0.10200061005991791,
"median": 2.09908891542,
"user": 2.5046830400000006,
"system": 2.86833546,
"min": 2.0617027974199997,
"max": 2.40966902042,
"times": [
2.09756596542,
2.10061186542,
2.0617027974199997,
2.1465747674199998,
2.07454306642,
2.0900668804199998,
2.40966902042,
2.16773884242,
2.12362292242,
2.07818050242
]
},
{
"command": "pnpr@main",
"mean": 2.13437415062,
"stddev": 0.10376699747431908,
"median": 2.10075887142,
"user": 2.4839340400000003,
"system": 2.8656074599999997,
"min": 2.05382659642,
"max": 2.39593725842,
"times": [
2.39593725842,
2.14971084642,
2.0939039664199997,
2.0582995454199997,
2.05382659642,
2.08286848842,
2.10761377642,
2.11087123642,
2.21670702642,
2.07400276542
]
}
]
}Scenario: Isolated linker: fresh install, hot cache + hot store
BENCHMARK_REPORT.json{
"results": [
{
"command": "pacquet@HEAD",
"mean": 1.3084612022800002,
"stddev": 0.011756881187317771,
"median": 1.3097245211800002,
"user": 1.2834974600000002,
"system": 1.66066562,
"min": 1.29390698918,
"max": 1.33182248818,
"times": [
1.31102788318,
1.3084211591800001,
1.33182248818,
1.3149692161800002,
1.29527207918,
1.29632931118,
1.31687444218,
1.29390698918,
1.30324315818,
1.3127452961800001
]
},
{
"command": "pacquet@main",
"mean": 1.3463289378799999,
"stddev": 0.041714020793775314,
"median": 1.33509595668,
"user": 1.2888723600000003,
"system": 1.6938282199999999,
"min": 1.30733090018,
"max": 1.44249351018,
"times": [
1.31817615118,
1.30936521418,
1.30733090018,
1.44249351018,
1.3349145281800001,
1.33527738518,
1.34463360018,
1.3939565631800002,
1.33189623618,
1.34524529018
]
},
{
"command": "pnpr@HEAD",
"mean": 0.64763000418,
"stddev": 0.0071394063902914745,
"median": 0.64664086618,
"user": 0.33068205999999994,
"system": 1.2506776199999998,
"min": 0.6386749581800001,
"max": 0.66368979118,
"times": [
0.6440262291800001,
0.6460151321800001,
0.6485732991800001,
0.66368979118,
0.64145119518,
0.6426836181800001,
0.65335213518,
0.6505670831800001,
0.6386749581800001,
0.64726660018
]
},
{
"command": "pnpr@main",
"mean": 0.6485522717800001,
"stddev": 0.00943830761946736,
"median": 0.64701757218,
"user": 0.32630655999999997,
"system": 1.26309592,
"min": 0.6346906791800001,
"max": 0.6698745141800001,
"times": [
0.6467891611800001,
0.64139698318,
0.64724598318,
0.64944824018,
0.6463198361800001,
0.65676960118,
0.6698745141800001,
0.6346906791800001,
0.64942258218,
0.6435651371800001
]
}
]
}Scenario: Isolated linker: fresh install, cold cache + hot store
BENCHMARK_REPORT.json{
"results": [
{
"command": "pacquet@HEAD",
"mean": 3.0102097265400003,
"stddev": 0.0374445844283434,
"median": 3.0046616639400003,
"user": 1.7852895599999994,
"system": 1.94962272,
"min": 2.96769407694,
"max": 3.09119218294,
"times": [
3.00206685394,
3.03043969794,
2.96769407694,
2.99587764894,
2.96865475994,
3.00725647394,
2.98598681094,
3.09119218294,
3.00747158194,
3.04545717794
]
},
{
"command": "pacquet@main",
"mean": 3.0078761520400006,
"stddev": 0.028444558503863692,
"median": 3.00885426144,
"user": 1.76247716,
"system": 1.9747484199999998,
"min": 2.9637325169400004,
"max": 3.0477181569400003,
"times": [
3.00534044694,
3.0197898259400002,
3.04566299094,
2.98927243294,
2.9637325169400004,
3.0477181569400003,
2.9690276409400003,
3.02395016694,
3.00189926594,
3.01236807594
]
},
{
"command": "pnpr@HEAD",
"mean": 0.65515171834,
"stddev": 0.011010368159911884,
"median": 0.65357999194,
"user": 0.32236516,
"system": 1.2846942199999998,
"min": 0.64239282594,
"max": 0.68341389894,
"times": [
0.65723300894,
0.6534360999400001,
0.65245476294,
0.6488234309400001,
0.65805473794,
0.68341389894,
0.65485552094,
0.64712901294,
0.64239282594,
0.65372388394
]
},
{
"command": "pnpr@main",
"mean": 0.6670283991400001,
"stddev": 0.058424777514286916,
"median": 0.6469486524400001,
"user": 0.32909025999999997,
"system": 1.2658811199999997,
"min": 0.63531178194,
"max": 0.83069817694,
"times": [
0.67315523194,
0.64679458694,
0.65738699694,
0.6471027179400001,
0.6491291559400001,
0.64657821894,
0.6436972789400001,
0.63531178194,
0.64042984494,
0.83069817694
]
}
]
}Scenario: Isolated linker: fresh restore, cold cache + cold store + cold pnpr
BENCHMARK_REPORT.json{
"results": [
{
"command": "pacquet@HEAD",
"mean": 7.547636674000001,
"stddev": 0.1930123825306599,
"median": 7.5127188382000005,
"user": 4.17198458,
"system": 3.76167322,
"min": 7.359836271200001,
"max": 8.0601561412,
"times": [
7.605879192200001,
7.5159730822,
8.0601561412,
7.4751668882,
7.3950579122,
7.5057782782,
7.5163244192,
7.359836271200001,
7.509464594200001,
7.5327299612
]
},
{
"command": "pacquet@main",
"mean": 7.596862762399999,
"stddev": 0.19190059507705892,
"median": 7.6153833107,
"user": 4.122898780000001,
"system": 3.7606222199999997,
"min": 7.3259826412,
"max": 8.0182949392,
"times": [
7.4642639632000005,
7.4487503182,
7.4555467202,
8.0182949392,
7.6661892252,
7.3259826412,
7.587997421200001,
7.6924365662000005,
7.6663966292,
7.6427692002
]
},
{
"command": "pnpr@HEAD",
"mean": 5.4694999083999996,
"stddev": 0.05897366065639914,
"median": 5.4740521032,
"user": 2.7717368799999997,
"system": 3.1971334199999997,
"min": 5.3643262502,
"max": 5.5414531382000005,
"times": [
5.5252188542,
5.465190172200001,
5.513130209200001,
5.4403282682,
5.3643262502,
5.4164259472000005,
5.417494238200001,
5.5414531382000005,
5.5285179722,
5.4829140342
]
},
{
"command": "pnpr@main",
"mean": 5.514961098600001,
"stddev": 0.08713541965524363,
"median": 5.520505943200001,
"user": 2.76312578,
"system": 3.20970272,
"min": 5.3728063832,
"max": 5.6700273052000005,
"times": [
5.572450987200001,
5.5161400662,
5.5629651742,
5.561292943200001,
5.3728063832,
5.6700273052000005,
5.409544906200001,
5.523902540200001,
5.517109346200001,
5.4433713342
]
}
]
} |
|
| Branch | pr/12737 |
| Testbed | pnpr |
⚠️ WARNING: No Threshold found!Without a Threshold, no Alerts will ever be generated.
Click here to create a new Threshold
For more information, see the Threshold documentation.
To only post results if a Threshold exists, set the--ci-only-thresholdsflag.
Click to view all benchmark results
| Benchmark | Latency | milliseconds (ms) |
|---|---|---|
| isolated-linker.fresh-install.cold-cache.cold-store | 📈 view plot | 2,135.03 ms |
| isolated-linker.fresh-install.cold-cache.hot-store | 📈 view plot | 655.15 ms |
| isolated-linker.fresh-install.hot-cache.hot-store | 📈 view plot | 647.63 ms |
| isolated-linker.fresh-restore.cold-cache.cold-store | 📈 view plot | 2,207.76 ms |
| isolated-linker.fresh-restore.cold-cache.cold-store.cold-pnpr | 📈 view plot | 5,469.50 ms |
| isolated-linker.fresh-restore.hot-cache.hot-store | 📈 view plot | 697.45 ms |
A full-history audit found 15 pnpm/pnpm commit SHAs cited in pacquet doc comments that resolve on GitHub (kept alive by pull-request refs) but are not ancestors of origin/main — fragile exactly as this PR's AGENTS.md guidance warns. These were pre-existing links the dead-link repair didn't touch because they were not 404s. Each reference is repinned to an on-main commit with byte-identical file content, so the line anchors stay accurate: - For files the cited PR did not modify, the pinned commit is the branch point (merge-base with main), or main HEAD (a6f303c) when the file is unchanged there. Anchors carry over verbatim. - For files the cited PR did modify, the pin moves to main HEAD and the anchors are re-derived against the merged content by matching the cited lines. Verified after the change: every pnpm/pnpm SHA referenced in pacquet is reachable from origin/main (git merge-base --is-ancestor exits 0), and every link resolves (HTTP 200). Comment-only change; no code is affected. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0176j9z5mqFgFHRKhsusR3co
|
Why do we need links with commit hashes if the changes are in the same repository? Especially I don't like that this way you need to wait for a PR to be merged to create a proper link. |
@zkochan I have prompted the AI to change them to relative paths. Actually though. I think the historical ports should stay permalinks to not risk stale. Imagine editing the TypeScript code and then the links become invalid. And I don't think future implementers, be it manual or AI-assisted would always detect the invalid links. And I also don't think it's possible to design such a lint to ensure eternal validity of references either. Anyway. The AI agent is in process. If you change your mind, the new commit can just be easily reverted. I have marked this PR as draft again. |
|
I don't care about the links. pacquet has already almost 100% feature parity with pnpm. We can remove the links altogether. Currently all changes are done to both ts and rust pnpm at the same time. I would vote for removing the links altogether. As well as any text that references the typescript code. pacquet is already the source of truth. |
@zkochan The AI is working on that. |
6676a9f to
24dc366
Compare
…ment the parity paradigm pacquet and the TypeScript pnpm CLI are co-developed parallel implementations at near-complete feature parity, with neither stack downstream of the other. Remove the GitHub permalinks and the "mirrors upstream's X" framing that pointed pacquet comments at the pnpm TypeScript source, and rewrite the affected prose to describe pacquet's own behavior. Update the agent and contributor guides (root and pacquet AGENTS.md, pacquet CODE_STYLE_GUIDE.md, README, and related docs) to state the new paradigm and stop instructing contributors to cite upstream permalinks. Issue and pull-request references, third-party attributions, generic pnpm-product mentions, and behavioral documentation are preserved. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0176j9z5mqFgFHRKhsusR3co
24dc366 to
5719fd2
Compare
…n test
The mixed-filter ordering test cited the TypeScript
`{ ...prodFilteredGraph, ...filteredGraph }` spread; describe the ordering as
pacquet's own behavior, consistent with the parity paradigm (pnpm#12737)
and the already-de-cited twin in recursive.rs.
…references Apply the #12737 paradigm to this branch's files: pacquet and the TypeScript pnpm CLI are co-developed parallel implementations at near-complete parity, neither downstream of the other, so comments describe pacquet's own behavior rather than pointing at the TS source. Removed the `/blob/` permalinks to the pnpm-org TypeScript repos and the 'Ports / Mirrors / matching the TS X' framing (cited TS symbols and files like otp.test.ts, recursivePublish, generateProvenance, createReadline- Interface, execa, libnpmpublish, sigstore-js), rewriting the affected prose. Kept issue/PR references, pnpm-product mentions, shared-contract identifiers (ERR_PNPM_* codes, the pnpm:global reporter channel, npm registry terms), third-party attributions, and Rust intra-doc links. Comment-only, except two incidental lint fixes to the new tests surfaced while verifying (a Default field-reassign and a use-collapse).
…rivation An earlier rebase of this branch reverted the repo-wide removal of TypeScript-code references from pacquet comments (pnpm#12737) across resolve_dependency_tree.rs, re-adding stale permalinks and 'mirrors upstream' prose in code this PR does not otherwise touch. Restore the cleaned-up comment text and reword the new code's own comments to describe pacquet's contract instead of citing TS symbols. Also deduplicate the npm-alias / npm:<range> / jsr name derivation: overlay_lookup_names now builds its candidate set from real_package_name_of instead of carrying a second copy of the same parsing logic. Behaviorally equivalent for every specifier shape (plain, npm-alias, range form, empty target, unparsable jsr, missing alias, alias-equals-inner dedup).
Summary
This PR started as a repair of dead GitHub permalinks in pacquet's Rust comments. Per maintainer direction in the thread, its scope changed: instead of fixing the links, it removes the references to the pnpm TypeScript codebase entirely, and documents why.
pacquet and the TypeScript pnpm CLI are now co-developed parallel implementations of the same package manager, at near-complete feature parity, with neither stack downstream of the other. In that world the pervasive "mirrors upstream's
someTsFnat a pinned permalink" framing in pacquet's comments is both obsolete (pacquet is a source of truth in its own right, not a port that trails the TypeScript CLI) and fragile (the permalinks 404 whenever the referenced code is moved, renamed, or rebased away — which is what surfaced the original dead-link problem).What changed:
/blob/and/tree/permalink to the pnpm-org TypeScript repos (pnpm/pnpmand the satellite reposcomponents,npm-lifecycle,cmd-shim,version-selector-type,symlink-dir,parse-npm-tarball-url,encode-registry,npm-conf,npm-package-arg,spec) from pacquet's Rust comments — over 1,700 links across ~330 files — along with the "Mirrors / Ports / matches upstream'ssomeTsFn" prose and*.tssource citations. Each was rewritten into a self-contained description of pacquet's own behavior, preserving the what and why.pnpm/pnpm#NNN,/issues/,/pull/,/actions/) andpnpm/pacquetself-references; third-party attributions (yarnpkg/berry, npm packages, Node.js docs, security advisories, etc.); Rust intra-doc links; shared-contract identifiers such asERR_PNPM_*error codes and thepnpm:-prefixed reporter wire format; and generic mentions of pnpm the product / CLI / on-disk format.AGENTS.mdand pacquet'sAGENTS.md(rewrote "The cardinal rule" around bidirectional parity and removed the permalink-citation guidance),pacquet/CODE_STYLE_GUIDE.md(reframed the Reporter / log-events section around the shared wire contract),pacquet/README.md, and a few plan/task docs.The change is comment-only across the Rust crates, with the sole exception of three
#[expect(reason = "…")]attribute strings that themselves cited an upstream TypeScript symbol.Squash Commit Body
Checklist
pacquet/port, or the description notes what still needs porting.— N/A in the usual sense: this removes pacquet's references to the
TypeScript code; there is no symmetric change to make on the TypeScript
side. The shared paradigm is documented in the root
AGENTS.md.Added a changeset— not applicable: comment/documentation-only,no published-package behavior changes.
Added or updated tests— not applicable: no behavior change.describe the parity paradigm).
Written by an agent (Claude Code).