jorgex-stack 1.7.1 → 1.7.3

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.
Files changed (3) hide show
  1. package/README.md +11 -3
  2. package/dist/cli.js +9 -7
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -97,7 +97,7 @@ Programmatic mode does **not** provide:
97
97
 
98
98
  ### Pi runtime
99
99
 
100
- Pi combines the frozen **snapshot v2** package with a Stack-owned shared projection. Stack supports the exact published package **`jorgex-pi@0.4.0`** and keeps Pi out of the adapter/component manifest and model map.
100
+ Pi combines the frozen **snapshot v2** package with a Stack-owned shared projection. This adoption targets the exact published package **`jorgex-pi@0.6.1`** and keeps Pi out of the adapter/component manifest and model map. The Stack release that consumes it must pin `npm:jorgex-pi@0.6.1` in `src/lib/pi-runtime.ts`; this section does not claim that a user installation or `main` has already consumed it.
101
101
 
102
102
  ```bash
103
103
  pnpm dlx jorgex-stack install --agents pi
@@ -107,7 +107,9 @@ pnpm dlx jorgex-stack sync --agents pi
107
107
  pnpm dlx jorgex-stack uninstall --agents pi
108
108
  ```
109
109
 
110
- Stack downloads the frozen registry tarball, verifies its exact size plus SHA-256/SHA-512, backs up Pi's `settings.json`, and only then asks Pi to install that local file. Pi's own package-manager invocation is the narrow runtime exception to the repository's pnpm-only rule; the Stack lifecycle never launches npm directly. After the package is healthy, Stack projects the shared resources into Pi: marked `jorgex:system-prompt` and `jorgex:engram-protocol` sections in `~/.pi/agent/AGENTS.md`, canonical skills under `~/.agents/skills`, and `~/.pi/agent/prompts/lean-audit.md`. When the managed Playwright preference is active, the projection also adds or removes the marked `jorgex:browser` section dynamically. The Pi-only `install --agents pi --playwright` flow installs and persists that Playwright capability just like the other harnesses. Chrome DevTools MCP and Context7 remain outside the Pi scope. The managed Pi package entry is the exact object `{ "source": "npm:jorgex-pi@0.4.0", "skills": [], "prompts": [] }`; filters are applied only after this projection exists, so the package does not duplicate shared resources. Package ownership is recorded separately in `~/.jorgex-stack/pi-receipt.json`; projection ownership is recorded in `~/.jorgex-stack/pi-projection-receipt.json`. Both receipts are scope-bound and fail closed for manual, duplicate, divergent, partial, corrupt, copied-to-another-scope, or unknown-history state.
110
+ Stack downloads the frozen registry tarball, verifies its exact size plus SHA-256/SHA-512, backs up Pi's `settings.json`, and only then asks Pi to install that local file. For `0.6.1`, the frozen tarball is `89120966` bytes; the URL is derived from the version and the authoritative size/SHA-256/SHA-512 pin remains in `src/lib/pi-runtime.ts` rather than being duplicated here. Pi's own package-manager invocation is the narrow runtime exception to the repository's pnpm-only rule; the Stack lifecycle never launches npm directly. After the package is healthy, Stack projects the shared resources into Pi: marked `jorgex:system-prompt` and `jorgex:engram-protocol` sections in `~/.pi/agent/AGENTS.md`, canonical skills under `~/.agents/skills`, and `~/.pi/agent/prompts/lean-audit.md`. When the managed Playwright preference is active, the projection also adds or removes the marked `jorgex:browser` section dynamically. The Pi-only `install --agents pi --playwright` flow installs and persists that Playwright capability just like the other harnesses. Chrome DevTools MCP and Context7 remain outside the Pi scope. The managed Pi package entry is the exact object `{ "source": "npm:jorgex-pi@0.6.1", "skills": [], "prompts": [] }`; filters are applied only after this projection exists, so the package does not duplicate shared resources. Package ownership is recorded separately in `~/.jorgex-stack/pi-receipt.json`; projection ownership is recorded in `~/.jorgex-stack/pi-projection-receipt.json`. Both receipts are scope-bound and fail closed for manual, duplicate, divergent, partial, corrupt, copied-to-another-scope, or unknown-history state.
111
+
112
+ The published artifact has three separate provenance anchors: the release checkout and tarball producer is `fa3cc0dbf06398dc39f70fdf0ba99e4a10846203`; the SLSA workflow trigger/resolved-dependencies commit is `864c322d4c3ed8814cdd27092926451258d7e55d`; and the Stack parity source is `ebc55667ba610925227fcb575ae1f84750a53510`. Registry metadata has no `gitHead`. The npm attestation binds the exact tarball SHA-512 to the workflow and trigger `864c322d...`, not directly to `fa3cc0d...`; README therefore makes no claim that the attestation is a signature of the release checkout.
111
113
 
112
114
  Install, sync and uninstall back up every managed file before changing it and are idempotent. `doctor` reports package and projection drift without repairing it. Uninstall removes only receipt-owned package/projection state, retains shared files also owned by another runtime, and preserves user content outside marked sections. Engram remains user-owned and is never removed; the receipts only carry the verified executable hand-off required by the package.
113
115
 
@@ -115,6 +117,8 @@ The package owns Pi's native primary-model projection: `openai-codex/gpt-5.6-sol
115
117
 
116
118
  Engram remains mandatory and user-owned. An existing binary is preserved. Interactive install may offer the native `brew`/`go`/release channel with explicit confirmation; `--yes` and non-TTY installs fail with a remedy when Engram is absent. The database and memories are never updated or deleted, and uninstall never deletes the Engram binary. Under `--target-dir`, Stack accepts only `<target>/bin/engram`, isolates Pi/Home/XDG/AppData/temp/npm-cache paths inside the target, and never consults the host Engram or Pi configuration.
117
119
 
120
+ The transition from `jorgex-pi@0.4.0` to `jorgex-pi@0.6.1` is not in-place. Each Stack release recognizes only the Pi receipt for its exact pin. The published Stack **`jorgex-stack@1.7.1`** is the corroborated release that recognizes `npm:jorgex-pi@0.4.0`; use it explicitly, never `latest`, to clean an old `0.4.0` receipt before installing the Stack release that pins `0.6.1`. Rollback is symmetric: first use the release that recognizes the present `0.6.1` receipt, then `jorgex-stack@1.7.1` if returning to `0.4.0`. Never edit receipts or hashes and never delete `HOME`, Engram, or another runtime's projection to force trust. The exact examples and failure behavior are in [docs/references/pi-runtime.md](docs/references/pi-runtime.md); the commands there are documentation, not commands executed by this adoption.
121
+
118
122
  The 24-hour npm maturity rule applies only to real managed installation or consumption of the new Pi package. Development, PR validation, merge and Stack publication may proceed immediately against the exact verified artifact; installing it on a real user scope before 24 hours requires Jorge's explicit exception.
119
123
 
120
124
  `update --agents pi` only runs the Pi package lifecycle; it does not enter the global Stack updater. `update --check --agents pi` is a read-only Pi doctor. Uninstall runs package cleanup, backs up Pi's settings before removal, removes only the exact receipt-owned package after verifying absence, and preserves all companion/user state. Full behavior, failure states and troubleshooting are in [docs/references/pi-runtime.md](docs/references/pi-runtime.md).
@@ -202,7 +206,11 @@ The CLI is complete and the real migration has been executed; the stack is the o
202
206
 
203
207
  ## Publishing
204
208
 
205
- Releases are triggered by push/merge to `main` and GitHub Actions; there is also a recovery `workflow_dispatch` on `main` with an optional `release_sha`. `validate` resolves the target SHA once and exposes it as `target_sha`; `bump` reuses that SHA. If you do not pass `release_sha`, `validate` pins `target_sha` to `origin/main` after `fetch`; if you do pass it, it must be a full 40-hex SHA that belongs to `main` or the workflow fails red with recovery instructions. Running without `release_sha` is only valid to publish `origin/main` when the version does not exist on npm yet; if the version already exists and the tag is missing, the workflow fails and requires `workflow_dispatch` with `release_sha=<published sha>`. If the diff mixes publishable changes with `.github/workflows/*`, auto-release stops before bump/publish because GitHub may reject the tag push without workflow permissions; split the release or use manual publish/tag with elevated permissions. `pnpm publish` is not used and npm login is not required:
209
+ Releases are triggered by push/merge to `main` and GitHub Actions; there is also a recovery `workflow_dispatch` on `main` with an optional `release_sha`. `validate` resolves the target SHA once and exposes it as `target_sha`; `bump` reuses that SHA. If you do not pass `release_sha`, `validate` pins `target_sha` to `origin/main` after `fetch`; if you do pass it, it must be a full 40-hex SHA that belongs to `main` or the workflow fails red with recovery instructions. Running without `release_sha` is only valid to publish `origin/main` when the version does not exist on npm yet; if the version already exists and the tag is missing, the workflow fails and requires `workflow_dispatch` with `release_sha=<published sha>`. If the diff mixes publishable changes with `.github/workflows/*`, a normal push remains eligible for the automatic patch bump when the current version already exists on npm and the commit is not a release bump; when that automatic path is not eligible, the workflow stops before direct publish/tag because GitHub may reject the tag push without workflow permissions. Split the release or use manual publish/tag with elevated permissions. `pnpm publish` is not used and npm login is not required:
210
+
211
+ Antes de instalar cualquier dependencia, `validate` ejecuta un preflight sin dependencias con Node 24 después de resolver el checkout. En un push normal solo puede omitir los pasos de validación costosos y `bump` cuando existe un tag `v<package.version>` válido y alcanzable que proporciona la base acumulada, y ese diff no contiene rutas publicables. Si falta el tag, el commit es un bump de release o anti-loop, la ejecución es `workflow_dispatch` o se proporciona `release_sha`, se mantiene el flujo completo; las refs inválidas, un tag que no sea ancestro o un error de `git diff` fallan en rojo, sin omitir silenciosamente. El preflight compara contra el tag de release de la versión actual (`v<package.version>`), no solo contra el último commit; si ese tag falta, no recurre a otro tag para justificar el skip y mantiene el flujo completo. Un diff que mezcla `.github/workflows/*` con rutas publicables mantiene el flujo completo; cuando el auto-bump es elegible, sigue permitido, y en los demás casos se conserva la guarda existente de permisos del workflow.
212
+
213
+ El preflight condiciona únicamente la preparación de toolchain, la instalación de dependencias, typecheck/tests/build/upload y `bump`; las guardas existentes de registry, publicación y tag siguen siendo autoridad. Los cuatro jobs conservan permisos separados, los checkouts de solo lectura usan `persist-credentials: false`, `validate`, `bump` y `publish` tienen timeout de 10 min, `tag-release` de 5 min, y el grupo de concurrencia mantiene `cancel-in-progress: false` (no cancela una ejecución en curso; una pendiente sí puede ser reemplazada). Esto es una optimización interna de CI, no una política portable de testing ni una afirmación de ahorro de facturación medido.
206
214
 
207
215
  - **Automatic patch**: if the push to `main` contains publishable changes and the current `package.json` version already exists on npm, the workflow finds the first free patch (`x+1`, `x+2`, ...), commits `chore(release): bump version to v...`, and publishes. If tag `v<package.version>` already exists, it uses that point as the accumulated base; otherwise, it falls back to `github.event.before`. Obsolete runs are aborted after `git fetch origin main --tags` if `origin/main` no longer matches `GITHUB_SHA`.
208
216
  - **Manual recovery**: a manual run on `main` with `release_sha` publishes that SHA if it does not exist on npm yet, without bumping again; if the version already exists on npm but tag `v<version>` is missing, the workflow fails and forces a rerun with `release_sha=<published sha>` to avoid tagging `origin/main`. `release_sha` must be a full 40-hex SHA and belong to `main`; mutable refs (`main`, tags, `main~1`) are rejected. If you do not pass `release_sha`, `validate` resolves `origin/main` once, exposes it as `target_sha`, and `bump` uses that validated SHA. Recovery does not bypass the `.github/workflows/*` guard: if the diff mixes workflows with publishable changes, split the release or perform the tag/publish manually with elevated permissions. If there is no reachable previous release tag to reconstruct the range, the workflow fails closed and requires manual intervention.
package/dist/cli.js CHANGED
@@ -5088,16 +5088,16 @@ import { createHash } from "crypto";
5088
5088
  var PI_RUNTIME_CANDIDATE = {
5089
5089
  package: {
5090
5090
  name: "jorgex-pi",
5091
- version: "0.4.0",
5092
- source: "npm:jorgex-pi@0.4.0"
5091
+ version: "0.6.1",
5092
+ source: "npm:jorgex-pi@0.6.1"
5093
5093
  },
5094
5094
  provenance: {
5095
- commit: "40abf9a0f7139e54da25344699c907cbdd859e27"
5095
+ commit: "fa3cc0dbf06398dc39f70fdf0ba99e4a10846203"
5096
5096
  },
5097
5097
  tarball: {
5098
- bytes: 89116913,
5099
- sha256: "6a984cf270dc204e1ccec15bcccd52b9a9eac168be68e404ca588bd54d924cd1",
5100
- sha512: "8ec9424cb5bb313b9a29b30d39f84ab32af3004039f077573d3344c2d9564556679a370919912e1fb969780d989d56e5ccea0d06bd5056c00b67b248a68de661"
5098
+ bytes: 89120966,
5099
+ sha256: "9a4040ce34dba36aff56f618f957189749219f9560fb796e2b6864bdabf51b93",
5100
+ sha512: "0b08a0ae2477c9dd0c2f62cbf15bc212d2ea9ef66c1a366e29c9f772ee73d073ab991d177583bbbaf3db8844053d7f34d8350a4acd9eb270c3887bd05cddd92f"
5101
5101
  },
5102
5102
  pi: {
5103
5103
  testedVersions: ["0.84.2"]
@@ -5116,7 +5116,9 @@ var PI_RUNTIME_CANDIDATE = {
5116
5116
  "engram-runtime-tools-v1",
5117
5117
  "runner-json-v1",
5118
5118
  "tui-branding-v1",
5119
- "managed-primary-model-v1"
5119
+ "managed-primary-model-v1",
5120
+ "quality-receipt-contract-v1",
5121
+ "quality-capabilities-contract-v1"
5120
5122
  ],
5121
5123
  runner: {
5122
5124
  bin: "jorgex-pi",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jorgex-stack",
3
- "version": "1.7.1",
3
+ "version": "1.7.3",
4
4
  "description": "Harness multi-agente portable: instala la config JorgeX (agentes, skills, hooks, Engram, MCPs) en Claude Code, Codex CLI, OpenCode y Pi",
5
5
  "type": "module",
6
6
  "license": "MIT",