create-pmos 0.170.0 → 0.171.0
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/c3-settings-test.js +11 -1
- package/workspace/guide/validate-with-typesafe.md +1 -1
- package/workspace/package-lock.json +2 -2
- package/workspace/package.json +1 -1
- package/workspace/public/pm/c3-settings.js +2 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-pmos",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.171.0",
|
|
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-12T22:43:39Z"}
|
|
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-12T22:43:39Z"}
|
|
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-12T22:43:39Z"}
|
|
6
6
|
status: stable
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Loads /c3.html against a real server with its own state directory and checks: the gear, the More menu item and
|
|
6
6
|
* ?tab=settings open Settings; every section draws; search finds a setting across sections; a change to a store setting
|
|
7
7
|
* is saved through POST /api/settings and read back; the theme switch sets the page theme; the start page and the
|
|
8
|
-
* time-of-day switches take effect on the next load; and the page throws no error.
|
|
8
|
+
* time-of-day switches take effect on the next load; Set up Laya opens its terminal; and the page throws no error.
|
|
9
9
|
*/
|
|
10
10
|
const path = require('path');
|
|
11
11
|
const { spawn } = require('child_process');
|
|
@@ -134,6 +134,16 @@ async function waitFor(page, fn, arg, ms = 8000) {
|
|
|
134
134
|
await page.keyboard.type('Settings');
|
|
135
135
|
ok('G1 the palette lists Settings', await waitFor(page, () => [...document.querySelectorAll('[role="option"], .pal li, .pal button, [data-pal-item]')].some((x) => /Settings/.test(x.textContent)), null, 3000));
|
|
136
136
|
|
|
137
|
+
/* ── I: Set up Laya opens its terminal on the page, not only on the server (jev-local-fallback R9) ── */
|
|
138
|
+
await page.goto(BASE + '/c3.html?tab=settings');
|
|
139
|
+
await waitFor(page, () => !!document.querySelector('[data-c3set-nav] [data-c3set-sec="privacy"]'));
|
|
140
|
+
await page.click('[data-c3set-nav] [data-c3set-sec="privacy"]');
|
|
141
|
+
ok('I1 Privacy shows the Set up Laya button', await waitFor(page, () => !!document.querySelector('[data-c3set-laya-setup]')));
|
|
142
|
+
await page.click('[data-c3set-laya-setup]');
|
|
143
|
+
ok('I2 the press opens the Set up Laya terminal', await waitFor(page, () => !!document.querySelector('[data-c3-session-term]'), null, 10000));
|
|
144
|
+
ok('I3 the row says what to do next', await waitFor(page, () => /Press Enter there/.test((document.querySelector('[data-c3set-row="typesafe.local"]') || {}).textContent || '')));
|
|
145
|
+
await page.keyboard.press('Escape').catch(() => {});
|
|
146
|
+
|
|
137
147
|
ok('H1 the page throws no error', errors.length === 0, errors.slice(0, 3).join(' | '));
|
|
138
148
|
finish();
|
|
139
149
|
})();
|
|
@@ -112,7 +112,7 @@ The workspace reads the TypeSafe key only on this machine. After you save the ke
|
|
|
112
112
|
If you have no TypeSafe key, a model on your computer can answer the same questions. Two models are supported. Both use the same interface as Jev.
|
|
113
113
|
|
|
114
114
|
- **Winnow**: in a `winnow-inference` folder, run `python3 scripts/serve.py`. It uses port 8091. Winnow-12B needs about 16 GB of memory.
|
|
115
|
-
- **Laya**: in Settings, press **Set up Laya**. A terminal named Set up Laya opens with the commands typed in. Read them and press Enter. The first time, they install Laya into the PMOS data folder. Then Laya starts and uses port 8000. Laya is small and runs on a laptop. Laya stops when you close that terminal or restart the computer. Press **Set up Laya** again to start it.
|
|
115
|
+
- **Laya**: in Settings, press **Set up Laya**. A terminal named Set up Laya opens over the Settings page, with the commands typed in. If you close it, open it again from the session list. Read them and press Enter. The first time, they install Laya into the PMOS data folder. Then Laya starts and uses port 8000. Laya is small and runs on a laptop. Laya stops when you close that terminal or restart the computer. Press **Set up Laya** again to start it.
|
|
116
116
|
|
|
117
117
|
1. Start the model.
|
|
118
118
|
2. Open Settings, then **Privacy and data**. Under **Local model if Jev is missing**, press **Winnow** or **Laya**.
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pmos-workspace",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.171.0",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "pmos-workspace",
|
|
9
|
-
"version": "0.
|
|
9
|
+
"version": "0.171.0",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@xterm/addon-fit": "^0.11.0",
|
package/workspace/package.json
CHANGED
|
@@ -624,6 +624,8 @@ export function mountSettings(host, ctx = {}) {
|
|
|
624
624
|
if (r && r.ok) {
|
|
625
625
|
M.typesafe = r.key; delete M.err['typesafe.local'];
|
|
626
626
|
M.localTest = { ok: !!r.started, text: r.started ? 'A terminal named Set up Laya opened with the commands typed in. Press Enter there, wait until Laya says it is running, then press Test.' : 'No terminal opened (' + (r.reason || 'unknown') + '). Run this in a terminal: ' + r.command };
|
|
627
|
+
// the server only starts the session; the page must open it, or nothing appears to happen
|
|
628
|
+
if (r.started && r.session) import('./c3-session-term.js').then((m) => m.openSessionTerm({ id: r.session, name: 'Set up Laya' })).catch(() => {});
|
|
627
629
|
} else { M.localTest = null; M.err['typesafe.local'] = (r && r.error) || 'Not started.'; }
|
|
628
630
|
draw();
|
|
629
631
|
};
|