ReviewOS

home-lang/home

Activate native package link and unlink lifecycle

#717
Closed chris opened this 9 days ago ·
9 days ago

Refs #66, #709 and completed native package fixes #713/#716.

Native link/unlink command activation and its current-I/O port are verified. f3a1e34 through e56d48e connect both owned command implementations, port global/scoped directory and symlink operations, port all-bin unregister iteration, and replace removed descriptor-path APIs with current native I/O and failure cleanup.

Production source e56d48e builds all 46/46 steps. Home and pinned Bun each pass all four original link tests and all seven original native-binlink tests. Four private native regressions also pass, including the full isolated registration/consumption/bin/remove/unregister lifecycle and prior package-manager regressions. Original sources/snapshots remain unchanged. See the final checkpoint for exact hashes and scope.

The additional shared executable-ownership defect is separately confirmed and remains open in #718: unlinking an older package can remove a later provider's active command. This issue closes the dispatch/I/O activation milestone only; it does not claim the full logical link surface or overall Bun goal is complete.

Verified evidence and retained first failures are committed under docs/docs/bun-port-evidence/2026-09-08-native-links-verified/ and 2026-09-08-native-links/, with ownership counterexample evidence under 2026-09-08-link-bin-ownership/. Accounting is docs/docs/bun-native-link-baseline.json. All changes are pushed to origin/main. Native VM gating and full platform/inventory/profile/build-ownership coverage remain under #66. Upstream unlink with a name argument remains unsupported; supported unregister is argument-free unlink from a registered package.

9 days ago

Next native package batch is in progress under #717, with source and initial evidence pushed through 77044f1.

The actual 831196d Home executable fails home link with Script not found "link"; that first native failure and the exact initial regression are retained. f3a1e34 connects both LinkCommand and UnlinkCommand to the native dependency dispatcher and ports their filesystem operations and bin-directory unregister iteration. Follow-up compilation exposed the descriptor path helper's removed std.os.getFdPath API. b6bea0d/3d97be6/e56d48e make descriptor types and I/O flags explicit, use current native descriptor realPath, and release the pooled path buffer on failure.

The production build is running. The prepared batch checks actual plain/scoped/workspace registration and consumption, all bin declaration forms, executable targets, live source updates, --save, frozen install/remove/unregister, idempotence, and preservation of source/physical package directories. Original bun-link and native-binlink files will run unchanged with pinned Bun controls and isolated global directory/bin/cache prefixes. First outcomes and generated fixture state will be retained. No native success or platform-wide completion is claimed yet.

See docs/docs/bun-native-link-baseline.json and docs/docs/bun-port-evidence/2026-09-08-native-links/ for the eight committed initial artifacts. #713/#716 remain verified and closed; #66 remains the full unfinished port goal.

9 days ago

Native link/unlink activation checkpoint is verified and pushed through bc3abc3 to origin/main.

Runtime source e56d48e built all 46/46 production steps. Home SHA-256: 56ea320b3204e0ab5535991c6088c6e2043fa84f26b54fcaacf6d68484fc6296. Pinned Bun control SHA-256: 47a87c1dea30da59c2733cce80118ea59bd338c616c6378f1c7f55e5f2b92c87.

  • Unchanged original bun-link.test.ts: Home 4 passed / 0 failed; Bun 4 / 0.
  • Unchanged original bun-install-native-binlink.test.ts: Home 7 passed / 0 failed; Bun 7 / 0. This includes executable-target containment and preservation of outside-file contents/modes.
  • Four native regressions pass: new full link lifecycle, prior local dependency identity, real-registry update/outdated/interactive behavior, and frozen-prerelease integrity. The new lifecycle covers plain/scoped packages and workspaces, global registration/consumption, real executable targets, live linked contents, --save, frozen install/remove, repeated register/unregister, every bin declaration form, and preservation of source/physical unlinked packages.

These are 11 registered original cases per runtime, counting repeated gate summaries once. Sources and snapshots stayed unchanged. All eight run-global prefixes were archived then removed; the private regression also cleaned its own prefix. The actual build/tests ran on macOS arm64. Native VM gating and the full platform/corpus/profile/build-ownership work remain open.

An additional ownership control found a shared logical defect in both executables: after A and B register the same command name, unlinking A removes B's current bin while B remains registered. This is confirmed in new #718, with the exact commands, before/after targets, hashes and both fixture archives committed under docs/docs/bun-port-evidence/2026-09-08-link-bin-ownership/. Shared upstream breakage is not accepted as passing logical parity. That defect remains open for the next repair.

The activation and existing-case milestone #717 is complete; #718 and the full #66 goal remain incomplete. Successful evidence is under docs/docs/bun-port-evidence/2026-09-08-native-links-verified/, and all first command/build failures remain under 2026-09-08-native-links/. Accounting is in docs/docs/bun-native-link-baseline.json. All commits use Chris Breuer's identity without coauthors.

Sign in to comment on this issue.