@cleocode/goal 0.9.6 → 0.9.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.9.7 — 2026-10-28
4
+
5
+ - **Fixed — the installed-release proof matches what the package actually ships.** `scripts/check-installed-goal.ts` compares every production artifact in the tag with the bytes the running plugin loaded. `isArtifactPath` counted `skills/*/evals/**` as production artifacts, but `package.json`'s `files` deliberately excludes them (`!skills/*/evals`), so npm never installs them and the comparison reported them as missing for every real install — making the release proof impossible to satisfy. The artifact set now matches the packed files; **every shipped entrypoint, `src/**`, `dist/**` and `skills/**` file is still byte-compared**, and an unexpected file is still rejected.
6
+ - **Packaging.** Same runtime, same CLI; only the version label and the artifact-set definition changed.
7
+
3
8
  ## 0.9.6 — 2026-10-28
4
9
 
5
10
  - **Packaging only — a git-tag install can be prepared by npm again.** `opencode plugin add github:kryptobaseddev/open-goal#vX.Y.Z` prepares a git dependency with npm, and npm installs the package's devDependencies before packing it. `@opencode/plugin` pulls the AWS Bedrock SDK, and npm's fresh resolution selected `@aws-sdk/*` versions whose registry tarballs were not available, so the preparation failed with `git dep preparation failed` (bun resolves the same tree fine, which is why CI and local installs were unaffected). `overrides` now pin that AWS dev tree to the exact versions this repository's `bun.lock` already resolves — all present and verified. **No runtime dependency, source or behaviour change**; `bun install` resolves the same versions and the published tarball is unchanged apart from the version.
package/dist/cli.js CHANGED
@@ -6910,7 +6910,7 @@ import { readFileSync as readFileSync4 } from "node:fs";
6910
6910
  // package.json
6911
6911
  var package_default = {
6912
6912
  name: "@cleocode/goal",
6913
- version: "0.9.6",
6913
+ version: "0.9.7",
6914
6914
  description: "CLEO Goal: persistent, host-verified goal mode for OpenCode 2 (and any harness through cleo-goal tick), with a structured goal contract and a live TUI.",
6915
6915
  type: "module",
6916
6916
  license: "MIT",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cleocode/goal",
3
- "version": "0.9.6",
3
+ "version": "0.9.7",
4
4
  "description": "CLEO Goal: persistent, host-verified goal mode for OpenCode 2 (and any harness through cleo-goal tick), with a structured goal contract and a live TUI.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -31,7 +31,12 @@ export type RuntimeProvenance = {
31
31
 
32
32
  const entrypoints = ["package.json", "server.ts", "tui.tsx", "rpc.ts"]
33
33
  const directories = ["src", "skills", "dist"]
34
- export const isArtifactPath = (path: string) => entrypoints.includes(path) || directories.some((dir) => path.startsWith(`${dir}/`))
34
+ /** The package's `files` excludes the skill eval fixtures under
35
+ * `skills/<name>/evals/`; those are neither shipped nor loaded, so they are not
36
+ * production artifacts and can never be byte-proven from an installed package. */
37
+ const notShipped = /^skills\/[^/]+\/evals\//
38
+ export const isArtifactPath = (path: string) =>
39
+ !notShipped.test(path) && (entrypoints.includes(path) || directories.some((dir) => path.startsWith(`${dir}/`)))
35
40
  export const hashArtifact = (bytes: Uint8Array) => createHash("sha256").update(bytes).digest("hex")
36
41
 
37
42
  export function captureArtifactHashes(root: string): ArtifactHashes {
@@ -41,7 +46,7 @@ export function captureArtifactHashes(root: string): ArtifactHashes {
41
46
  const path = `${relative}/${item.name}`
42
47
  if (item.isSymbolicLink()) throw new Error(`Artifact symlink is not a loaded-byte proof: ${path}`)
43
48
  if (item.isDirectory()) walk(path)
44
- else if (item.isFile()) files.push(path)
49
+ else if (item.isFile() && isArtifactPath(path)) files.push(path)
45
50
  }
46
51
  }
47
52
  for (const dir of directories) walk(dir)