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 +1 -1
- package/payload/KIT-VERSION +1 -1
- package/payload/planning/evals/eval-calibration.md +1 -1
- package/payload/planning/okrs/health-budgets.md +1 -1
- package/payload/state/discoveries.md +1 -1
- package/workspace/lib/kit-update.js +12 -1
- package/workspace/package-lock.json +1 -1
- package/workspace/package.json +1 -1
- package/workspace/server.js +4 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-pmos",
|
|
3
|
-
"version": "0.70.
|
|
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": {
|
package/payload/KIT-VERSION
CHANGED
|
@@ -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-
|
|
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-
|
|
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-
|
|
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 };
|
package/workspace/package.json
CHANGED
package/workspace/server.js
CHANGED
|
@@ -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
|
-
|
|
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
|
});
|