create-pmos 0.70.0 → 0.70.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-pmos",
3
- "version": "0.70.0",
3
+ "version": "0.70.1",
4
4
  "description": "Scaffold the PMOS portable kit — run the PMOS product-management workflow (initiative → lane-fit spec → contract → build → three gates, with work-type lanes for features, research, maintenance, incidents, and content) entirely inside your own repo, with all state as git-versioned files. Includes `workflow-sweep`, which audits the state every board derives from and separates real defects from work you simply have not done. `create-pmos workspace` also installs + launches the local Terminal Workspace GUI. No database, no network, no telemetry.",
5
5
  "license": "MIT",
6
6
  "bin": {
@@ -1,3 +1,3 @@
1
- kernel-source: pmos@9bbf3fc
1
+ kernel-source: pmos@9413354
2
2
  assembled: 2026-10-07
3
3
  mode: vendor
@@ -2,7 +2,7 @@
2
2
  type: Reference
3
3
  title: "Eval calibration log"
4
4
  description: "Append-only record of every PM override of an evaluator verdict."
5
- generated: {by: process:create-pmos, at: "2026-10-07T03:58:26Z"}
5
+ generated: {by: process:create-pmos, at: "2026-10-07T04:11:36Z"}
6
6
  status: stable
7
7
  ---
8
8
 
@@ -2,7 +2,7 @@
2
2
  type: Reference
3
3
  title: "Health budgets"
4
4
  description: "Closed registry of health-budget anchors (D59), edited only by the PM."
5
- generated: {by: process:create-pmos, at: "2026-10-07T03:58:26Z"}
5
+ generated: {by: process:create-pmos, at: "2026-10-07T04:11:36Z"}
6
6
  status: stable
7
7
  ---
8
8
 
@@ -2,7 +2,7 @@
2
2
  type: Reference
3
3
  title: "Discoveries and friction log"
4
4
  description: "Append-only record of what runs discovered and where the process rubbed."
5
- generated: {by: process:create-pmos, at: "2026-10-07T03:58:26Z"}
5
+ generated: {by: process:create-pmos, at: "2026-10-07T04:11:36Z"}
6
6
  status: stable
7
7
  ---
8
8
 
@@ -125,11 +125,22 @@ async function latest({ exec = cp.execFile } = {}) {
125
125
  return { ok: true, version: v };
126
126
  }
127
127
 
128
+ /**
129
+ * npm lists a new version in the check a moment before its download is served everywhere. A download asked for in that
130
+ * gap answers 404, and npm's CDN keeps the 404 for up to five minutes (Cache-Control max-age=300), so the same press
131
+ * a few minutes later works. Seen with 0.67.0, two minutes after its publish (workspace-kit-update).
132
+ */
133
+ function notServedYet(text, version) {
134
+ return /\bE404\b/.test(String(text)) && String(text).includes(`${PKG_NAME}-${version}.tgz`);
135
+ }
136
+ const notServedYetError = (version) => `npm lists ${PKG_NAME} ${version}, but its download is not available yet. A version this new can take up to five minutes to reach every npm server. Press Update again in five minutes`;
137
+
128
138
  async function updateKit(root, { version, exec = cp.execFile } = {}) {
129
139
  if (!validVersion(version)) return { ok: false, error: 'Check for updates first' };
130
140
  if (!readKit(root).present) return { ok: false, error: 'This repository has no PMOS kit folder (pmos/KIT-VERSION)' };
131
141
  const r = await run(exec, NPX, ['-y', `${PKG_NAME}@${version}`, '--update', String(root)], { timeout: UPDATE_TIMEOUT_MS, cwd: String(root) });
132
142
  const output = tail(r.stdout + (r.stderr ? '\n' + r.stderr : ''));
143
+ if (r.err && notServedYet(r.stdout + r.stderr, version)) return { ok: false, error: notServedYetError(version), output };
133
144
  const bad = why(r, 'The kit update');
134
145
  if (bad) return { ok: false, error: bad, output };
135
146
  return { ok: true, output, kit: readKit(root) };
@@ -188,4 +199,4 @@ function upgradeApp(root, { version, logFile, spawn = cp.spawn, env = updateEnv(
188
199
  }
189
200
  }
190
201
 
191
- module.exports = { PKG_NAME, cmpVer, validVersion, readKit, fromCheckout, status, compare, latest, updateKit, updateEnv, upgradeApp, whereFrom };
202
+ module.exports = { PKG_NAME, cmpVer, notServedYet, validVersion, readKit, fromCheckout, status, compare, latest, updateKit, updateEnv, upgradeApp, whereFrom };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pmos-workspace",
3
- "version": "0.70.0",
3
+ "version": "0.70.1",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pmos-workspace",
3
- "version": "0.70.0",
3
+ "version": "0.70.1",
4
4
  "private": true,
5
5
  "description": "PMOS Terminal Workspace — local companion hosting real PTYs beside the library and gates (D62)",
6
6
  "license": "MIT",
@@ -5186,7 +5186,10 @@ function serveFile(res, file, type, noCache) {
5186
5186
  // The app SHELL (index.html + the /pm/ module graph) must revalidate every load: without this a tab left open
5187
5187
  // across a `git merge` + server restart keeps running the pre-merge JS, so a fix that IS being
5188
5188
  // served never reaches the screen. `no-cache` = "always revalidate", not "never store".
5189
- if (noCache) headers['Cache-Control'] = 'no-cache';
5189
+ // Every script and stylesheet revalidates too, not only /pm/: a /lib/ module served with no header was kept by the
5190
+ // browser's heuristic cache, and at the Online address by Cloudflare's edge, so an updated workspace still drew
5191
+ // the old labels (workspace-kit-update). Images and fonts keep the default.
5192
+ if (noCache || /\.(js|mjs|css)$/.test(file)) headers['Cache-Control'] = 'no-cache';
5190
5193
  res.writeHead(200, headers);
5191
5194
  res.end(buf);
5192
5195
  });