diff --git a/README.md b/README.md index d684ba8..eae172f 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ proposed improvements to the durable recipe that guides the next run. **Start on your machine. Keep the evidence. Improve the process.** -> **Early release (`v0.4.6`).** Forgecell analyzes a ticket, runs the approved plan in +> **Early release (`v0.4.7`).** Forgecell analyzes a ticket, runs the approved plan in > your own coding harness, verifies the result with independent checks, and opens a draft > PR only after you approve it. Merge, deployment and issue closure stay manual. Findings > from outside reviewers come back as fix rounds that you approve before anything is @@ -71,14 +71,14 @@ No Node, Go or source checkout is required to install it. **[Installation guide →](docs/install.md)** — prerequisites, PATH, upgrades and rollback.
-One-line installer · pinned to v0.4.6 +One-line installer · pinned to v0.4.7 ```sh -sh -c 'set -eu; script=$(mktemp "${TMPDIR:-/tmp}/forgecell-bootstrap.XXXXXXXX") || { echo "Forgecell: cannot create bootstrap temporary file." >&2; exit 1; }; trap '"'"'rm -f "$script"'"'"' 0; trap '"'"'exit 1'"'"' HUP INT TERM; curl -fsSL --proto "=https" --proto-redir "=https" --connect-timeout 15 --max-time 30 https://github.com/DanielNetzer/forgecell/releases/download/v0.4.6/install.sh -o "$script" || { echo "Forgecell: bootstrap download failed." >&2; exit 1; }; [ -s "$script" ] || { echo "Forgecell: bootstrap download was empty." >&2; exit 1; }; sh "$script"' +sh -c 'set -eu; script=$(mktemp "${TMPDIR:-/tmp}/forgecell-bootstrap.XXXXXXXX") || { echo "Forgecell: cannot create bootstrap temporary file." >&2; exit 1; }; trap '"'"'rm -f "$script"'"'"' 0; trap '"'"'exit 1'"'"' HUP INT TERM; curl -fsSL --proto "=https" --proto-redir "=https" --connect-timeout 15 --max-time 30 https://github.com/DanielNetzer/forgecell/releases/download/v0.4.7/install.sh -o "$script" || { echo "Forgecell: bootstrap download failed." >&2; exit 1; }; [ -s "$script" ] || { echo "Forgecell: bootstrap download was empty." >&2; exit 1; }; sh "$script"' ``` The installer verifies the executable checksum and version before activation and -preserves local Lab data. This command pins the published public-core v0.4.6 release. +preserves local Lab data. This command pins the published public-core v0.4.7 release. Checksums share the binaries’ GitHub HTTPS endpoint; they are not independent signatures.
@@ -115,7 +115,7 @@ sample repository with a deterministic stub harness. It needs only Git and Go on no API key, no GitHub token, no network and no repository of your own, and it publishes nothing. -The `v0.4.6` release defaults to a distinct private Lab for each checkout +The `v0.4.7` release defaults to a distinct private Lab for each checkout under `~/.forgecell/labs/`; `forgecell doctor --json` reports the exact location. Existing preview.1 checkout Labs remain intact: use the same `--lab .forgecell` path for every command to keep using one. Labs and saved bindings are not automatically diff --git a/docs/install.md b/docs/install.md index d0e63a9..1ef2d76 100644 --- a/docs/install.md +++ b/docs/install.md @@ -1,9 +1,9 @@ # Install Forgecell CLI -Public CLI `v0.4.6` release; core source licensed under the [MIT License](../LICENSE). No repository access, Node or Go is needed to install. +Public CLI `v0.4.7` release; core source licensed under the [MIT License](../LICENSE). No repository access, Node or Go is needed to install. ```sh -sh -c 'set -eu; script=$(mktemp "${TMPDIR:-/tmp}/forgecell-bootstrap.XXXXXXXX") || { echo "Forgecell: cannot create bootstrap temporary file." >&2; exit 1; }; trap '"'"'rm -f "$script"'"'"' 0; trap '"'"'exit 1'"'"' HUP INT TERM; curl -fsSL --proto "=https" --proto-redir "=https" --connect-timeout 15 --max-time 30 https://github.com/DanielNetzer/forgecell/releases/download/v0.4.6/install.sh -o "$script" || { echo "Forgecell: bootstrap download failed." >&2; exit 1; }; [ -s "$script" ] || { echo "Forgecell: bootstrap download was empty." >&2; exit 1; }; sh "$script"' +sh -c 'set -eu; script=$(mktemp "${TMPDIR:-/tmp}/forgecell-bootstrap.XXXXXXXX") || { echo "Forgecell: cannot create bootstrap temporary file." >&2; exit 1; }; trap '"'"'rm -f "$script"'"'"' 0; trap '"'"'exit 1'"'"' HUP INT TERM; curl -fsSL --proto "=https" --proto-redir "=https" --connect-timeout 15 --max-time 30 https://github.com/DanielNetzer/forgecell/releases/download/v0.4.7/install.sh -o "$script" || { echo "Forgecell: bootstrap download failed." >&2; exit 1; }; [ -s "$script" ] || { echo "Forgecell: bootstrap download was empty." >&2; exit 1; }; sh "$script"' ``` The command downloads the bootstrap over HTTPS before executing it. A failed download @@ -172,7 +172,7 @@ a Molecule's delivery and exits nonzero unless they passed. and authentication checks; it does not prove model access or repository policy readiness. `forgecell --help` lists every command and flag. -The `v0.4.6` release uses a distinct directory under `~/.forgecell/labs/` +The `v0.4.7` release uses a distinct directory under `~/.forgecell/labs/` for each checkout by default; `forgecell doctor --json` reports the exact location. Existing preview.1 checkout Labs in the ignored `.forgecell` directory are left intact. Use the same `--lab .forgecell` path for every command to continue using one; @@ -182,7 +182,7 @@ path such as the example above keeps records outside the checkout. ## Versions, upgrade and rollback -The command above pins `v0.4.6`. v0.4.0 adds plugins: other trackers, forges and reviewers through pinned MCP plugins, and the `plugin new`/`pin`/`test` contributor kit. v0.4.1 hardens them: plugin pin, the plugin new skeletons, forgecomments severity markers, and intake for new Markdown files. v0.4.2 makes `loop --watch` print only what changed after its first pass, and tells a later coding attempt which files an earlier attempt already changed. v0.4.3 lets Codex plan Issues. v0.4.4 lets Cursor run the whole loop when a Formula binds planning to another harness, stopping leftover helper processes and reading Cursor's outcome after its progress text. v0.4.5 lets Codex coding runs write a Lab-owned Go build cache and stops Codex's own config edits from blocking amend and resume. v0.4.6 gets that cache past Codex's `shell_environment_policy`, lets a run blocked only by the sandbox go on to the Lab's checks, and probes the Codex sandbox before coding. Repeating it safely reinstalls that version. For another GitHub release, use its matching versioned installer; `FORGECELL_VERSION` overrides require the generic `FORGECELL_RELEASE_BASE` layout. Review release notes before upgrading. +The command above pins `v0.4.7`. v0.4.0 adds plugins: other trackers, forges and reviewers through pinned MCP plugins, and the `plugin new`/`pin`/`test` contributor kit. v0.4.1 hardens them: plugin pin, the plugin new skeletons, forgecomments severity markers, and intake for new Markdown files. v0.4.2 makes `loop --watch` print only what changed after its first pass, and tells a later coding attempt which files an earlier attempt already changed. v0.4.3 lets Codex plan Issues. v0.4.4 lets Cursor run the whole loop when a Formula binds planning to another harness, stopping leftover helper processes and reading Cursor's outcome after its progress text. v0.4.5 lets Codex coding runs write a Lab-owned Go build cache and stops Codex's own config edits from blocking amend and resume. v0.4.6 gets that cache past Codex's `shell_environment_policy`, lets a run blocked only by the sandbox go on to the Lab's checks, and probes the Codex sandbox before coding. v0.4.7 lets `--accept-protected-failures` accept a by-design protected failure whatever order the plan lists its checks in. Repeating it safely reinstalls that version. For another GitHub release, use its matching versioned installer; `FORGECELL_VERSION` overrides require the generic `FORGECELL_RELEASE_BASE` layout. Review release notes before upgrading. `forgecell rollback` restores the previous verified installation when one exists. Installation preserves Formulas and ledgers, stores versioned executables under `~/.forgecell/releases`, and refuses conflicting unmanaged launchers. @@ -256,7 +256,7 @@ Native maintainers use [the distribution design](design/native-cli-distribution. ## Published public-core release and legacy provenance -The pinned installer uses `DanielNetzer/forgecell` and the `v0.4.6` tag. +The pinned installer uses `DanielNetzer/forgecell` and the `v0.4.7` tag. The earlier published [v0.2.0-preview.2 prerelease](https://github.com/DanielNetzer/forgecell/releases/tag/v0.2.0-preview.2) was built from public-core source `801a9846fc9066dde985bb678348cac2bc89a249`. Installation requires no GitHub token, Git, gh, Go or Node. diff --git a/scripts/test-native-installer.py b/scripts/test-native-installer.py index 515ce29..0d90abc 100755 --- a/scripts/test-native-installer.py +++ b/scripts/test-native-installer.py @@ -37,7 +37,7 @@ assert binary.with_name(binary.name + '.sha256').read_text().strip() == hashlib.sha256(binary.read_bytes()).hexdigest() assert (release_root / 'install.sh').read_bytes() == (release_root / versions[-1] / 'install.sh').read_bytes() print('PASS: all four packages, license, notices and rendered version/tag pins') -public_url = 'https://github.com/DanielNetzer/forgecell/releases/download/v0.4.6/install.sh' +public_url = 'https://github.com/DanielNetzer/forgecell/releases/download/v0.4.7/install.sh' def documented_command(path): commands = [block.strip() for block in re.findall(r'```sh\n(.*?)\n```', path.read_text(), re.S) if public_url in block] assert len(commands) == 1, f'{path}: expected one public install command'