Loading
docs(npm): fix the scoped-package wire contracts in S11 and plan
Context
Live testing with the real npm CLI (the e2e harness in !867 (merged)) found two S11-prescribed behaviors that break scoped packages against real clients. The implementation faithfully follows the spec in both cases, so these are spec defects, the same class as the packument _rev gap (!861 (merged)/!863 (merged)):
- Publish: S11 publish Step 1 required the scope-stripped
_attachmentskey, butlibnpmpublish(npm, pnpm; the spec's own de-facto wire reference) keys the attachment bymanifest.nameverbatim, so every scoped publish failed with 400publish_envelope_invalid. - Install: the
dist.tarballURL carried the scoped name with a raw slash, which the single-segment{package_name}download route can never match, so every scoped install 404'd on the tarball GET.
Changes
- Publish Step 1, the example envelope, and the shape-invalid AC now prescribe the full-name
{name}-{version}.tgzkey. - Packument generation and its AC now prescribe the percent-encoded name in
dist.tarball(@scope%2Fpkg), the form the routes resolve. The storednpm_files.file_namekeeps the scope-stripped form in both cases. - Plan Step 23 updated to describe the npm e2e harness as built (bash script plus the
conformance:npm:s3-garagejob; thedevelopment_stubstag never existed, and Node was already pinned in.tool-versions), and the Status table records !867 (merged).
The implementation fix is stacked on this MR (!869 (merged)); the e2e harness MR (!867 (merged)) adds real-CLI scoped coverage on top.
Related to #143 (closed)
Edited by João Pereira