diff --git a/.changeset/claude-code-nonzero-exit.md b/.changeset/claude-code-nonzero-exit.md deleted file mode 100644 index 20cb133..0000000 --- a/.changeset/claude-code-nonzero-exit.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@gemstack/framework': patch ---- - -Fix the Claude Code driver treating a non-zero agent exit as success when the agent had already streamed some text. A crash mid-build now fails the turn (surfacing stderr or the partial text) instead of resolving as a result the loop can score production-grade. diff --git a/.changeset/headless-permission-default.md b/.changeset/headless-permission-default.md deleted file mode 100644 index f94ee30..0000000 --- a/.changeset/headless-permission-default.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -'@gemstack/framework': patch ---- - -Default the CLI to bypassPermissions so the headless loop can build/verify - -Every framework turn is a headless `claude -p` invocation, which can't answer an -interactive approval. The driver's library default (`acceptEdits`) auto-approves -edits but not Bash, so installs/builds/tests were silently denied: the -production-grade checklist tried `npm run build` / dev-boot, hit "Build needs -interactive approval which isn't available," failed pass 1 as "could not be -executed this session," and the loop ground on listing blockers it couldn't -verify. - -The `framework` CLI now defaults its Claude Code driver to `bypassPermissions` so -the full loop (install, build, test, dev-boot) runs unattended and the checklist -verifies for real. This is a permissive default appropriate to a headless -autonomous builder; `--permission-mode ` still overrides it (e.g. -`--permission-mode acceptEdits` for the old, conservative behavior), and -`--dangerously-skip-permissions` still takes precedence. The `ClaudeCodeDriver` -library default is unchanged (still `acceptEdits`); only the CLI opts up. - -Closes #225. diff --git a/.changeset/missing-verdict-fail-closed.md b/.changeset/missing-verdict-fail-closed.md deleted file mode 100644 index 07f3145..0000000 --- a/.changeset/missing-verdict-fail-closed.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@gemstack/framework': patch ---- - -Fail closed when a checklist reply omits the required `{ blockers }` verdict. A verdict-less reply was scored as empty-blockers (production-grade) and stopped the loop; it now surfaces a blocker so the loop re-prompts instead of declaring the app done off an unverifiable reply. diff --git a/packages/framework/CHANGELOG.md b/packages/framework/CHANGELOG.md index 2dcbff2..50ecbe3 100644 --- a/packages/framework/CHANGELOG.md +++ b/packages/framework/CHANGELOG.md @@ -1,5 +1,32 @@ # @gemstack/framework +## 0.5.2 + +### Patch Changes + +- 1d3ce64: Fix the Claude Code driver treating a non-zero agent exit as success when the agent had already streamed some text. A crash mid-build now fails the turn (surfacing stderr or the partial text) instead of resolving as a result the loop can score production-grade. +- 45b13b2: Default the CLI to bypassPermissions so the headless loop can build/verify + + Every framework turn is a headless `claude -p` invocation, which can't answer an + interactive approval. The driver's library default (`acceptEdits`) auto-approves + edits but not Bash, so installs/builds/tests were silently denied: the + production-grade checklist tried `npm run build` / dev-boot, hit "Build needs + interactive approval which isn't available," failed pass 1 as "could not be + executed this session," and the loop ground on listing blockers it couldn't + verify. + + The `framework` CLI now defaults its Claude Code driver to `bypassPermissions` so + the full loop (install, build, test, dev-boot) runs unattended and the checklist + verifies for real. This is a permissive default appropriate to a headless + autonomous builder; `--permission-mode ` still overrides it (e.g. + `--permission-mode acceptEdits` for the old, conservative behavior), and + `--dangerously-skip-permissions` still takes precedence. The `ClaudeCodeDriver` + library default is unchanged (still `acceptEdits`); only the CLI opts up. + + Closes #225. + +- 1259282: Fail closed when a checklist reply omits the required `{ blockers }` verdict. A verdict-less reply was scored as empty-blockers (production-grade) and stopped the loop; it now surfaces a blocker so the loop re-prompts instead of declaring the app done off an unverifiable reply. + ## 0.5.1 ### Patch Changes diff --git a/packages/framework/package.json b/packages/framework/package.json index ec5b231..c85aafc 100644 --- a/packages/framework/package.json +++ b/packages/framework/package.json @@ -1,6 +1,6 @@ { "name": "@gemstack/framework", - "version": "0.5.1", + "version": "0.5.2", "description": "The (AI) Framework: turnkey, zero-config AI orchestration that wraps a coding-agent CLI (Claude Code) as a black box and takes you from an idea to a running app. Vite for AI.", "keywords": [ "ai",