Harden npm package distribution proof #43
No reviewers
Labels
No labels
domain:agents
domain:ci
domain:docs
domain:forgejo
domain:infra
domain:memory
domain:runtime
domain:signal
domain:ux
mode:operator-only
mode:patchwarden-iskra-approved
mode:safe-auto
priority:p0
priority:p1
priority:p2
priority:p3
review:claude-reviewed
review:codex-reviewed
review:dziadek-reviewed
review:needs-human
safety:external-write
safety:no-prod-mutation
safety:prod-impact
safety:secret-touch
status:blocked
status:codex-ready
status:merged:pending-evidence
status:needs-evidence
status:operator-needed
status:parked
tier:0-platform-substrate
tier:1-iskra-value-layer
tier:2-tools-products-modules
type:bug
type:chore
type:docs
type:feat
type:policy
type:research
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
pdurlej/fallow-ts!43
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "codex/package-distribution-proof"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Canary Context Pack
Product story
Fork B owns Package Distribution. Before alpha publish, the release proof should catch npm packaging drift locally, especially cases where
npm packlooks fine butnpm publish --dry-runwould alter package metadata.What changed
npm run publish:dry-runas an explicit non-publishing alpha dry-run gate.release:smoketo run that publish dry-run and fail if npm reports metadata auto-correction such as a missing/stripped CLI bin.scripts/build.mjssonpm run buildcompiles withtscand setsdist/cli.jsexecutable for npmbinpublishing.package.json#bin.fallow-tsto npm's canonicaldist/cli.jspath.Why it changed
While implementing the dry-run gate,
npm publish --dry-runexposed a real release blocker: npm would auto-correct package metadata and remove the CLI bin becausedist/cli.jswas not executable at publish validation time. This PR makes that failure visible and fixes it.Files touched
scripts/build.mjsscripts/release-smoke.mjspackage.jsontests/package.test.mjsdocs/release-checklist.mdRelevant context
/Users/pd/Developer/fallow-ts-package-distributionbecause the main worktree had uncommitted Release Identity changes.mainafter PR #39.Runtime evidence
npm cinpm run buildnpm run publish:dry-runnpm run release:smokenpm test— 34/34 passingnpm run pack:dry-runnode dist/cli.js analyze --root . --format json --output /tmp/fallow-ts-report.jsonnode dist/cli.js analyze --root examples/demo-project --format textgit diff --checkKnown constraints
npm publish --dry-runstill prints npm's normal dry-run login warning. That is allowed. The release-smoke guard blocks metadata drift warnings, not the harmless dry-run login warning.Coordination notes
This PR overlaps
package.jsonwith Fork A / PR #40. Recommended merge order remains #40 first, then this PR rebased or updated if needed. No version, changelog release cut, CI workflow, adoption prose, parser, resolver, or finding changes are included.Explicit out-of-scope
No npm publish, no version bump, no package name ownership claim, no CI matrix changes, no analyzer changes, no new runtime dependencies.
Requested decision
Approve merge if the distribution proof is appropriate and the
binexecutable fix belongs in Package Distribution.Merge blockers
npm publish --dry-runstill auto-correcting metadata, release-smoke depending on registry publication, failing package tests, or crossing into release identity / CI / analyzer ownership.