#49 release install: scope generic copy out — placement belongs to the project's installer
SOURCE: owner correction on #48 (2026-09-08), agreed: placement is the PROJECT's job, not the forge's. #48 overgeneralized "artifact exists" into "f0rge places it" — a Go/Python/Node binary in $CARGO_HOME/bin is a cargo-ism injected into ecosystems that never touched cargo. The forge must not invent placement.
KEEP from #48 (proven): resolution order (record sha > git tag > main) and artifact STAGING (releases/build/<ver>/ holds the project's built binary, produced by the project's own CI/build script).
CORRECT: release install becomes resolve + stage + HAND OFF:
- if a project installer exists at a documented convention (e.g. install.sh at repo root, or releases/build/<ver>/install.sh — pick ONE, document in spec [release]), execute it argv-only with the staged artifact path; IT places the binary per its ecosystem (go install, venv, /usr/local/bin, whatever); agents write their project's installer and own it;
- if no installer: f0rge-self keeps its cargo install path (f0rge's installer IS cargo); foreign projects get a clear one-line message ("no installer for this project; write install.sh or use the project's documented install") + --dry-run shows the handoff;
- DELETE the generic copy-to-$CARGO_HOME/bin fallback for foreign projects.
- AGENTS.md Install section reworded to the scoped promise: f0rge release install = resolve+stage+run-the-project-installer. DONE: go/python-style project with install.sh installs via ITS script; f0rge self-installs via cargo; no generic copy; tests.
Comments (0)
No comments yet.