create-pmos 0.61.0 → 0.61.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/first-paint-audit.js +5 -2
- package/workspace/guide/today.md +2 -2
- package/workspace/package-lock.json +1 -1
- package/workspace/package.json +1 -1
- package/workspace/public/pm/today-day.js +4 -3
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-pmos",
|
|
3
|
-
"version": "0.61.
|
|
3
|
+
"version": "0.61.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-06T16:
|
|
5
|
+
generated: {by: process:create-pmos, at: "2026-10-06T16:49:07Z"}
|
|
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-06T16:
|
|
5
|
+
generated: {by: process:create-pmos, at: "2026-10-06T16:49:07Z"}
|
|
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-06T16:
|
|
5
|
+
generated: {by: process:create-pmos, at: "2026-10-06T16:49:07Z"}
|
|
6
6
|
status: stable
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -23,7 +23,10 @@
|
|
|
23
23
|
// specimen did not change.
|
|
24
24
|
const SPECIMEN_A = Object.freeze({ today: 17, initiatives: 24, board: 33, reports: 14 });
|
|
25
25
|
const BAR_DOCS = 1;
|
|
26
|
-
|
|
26
|
+
// Agenda opens on the month (the PM's Agenda mockup v5, 2026-10-06): the month adds its own controls to Today's budget,
|
|
27
|
+
// at most six week rows of a week button and seven days, the two month arrows and the five lenses.
|
|
28
|
+
const AGENDA_MONTH = 6 * 8 + 2 + 5;
|
|
29
|
+
const EXPECT = Object.freeze({ today: 17 + BAR_DOCS + AGENDA_MONTH, initiatives: 24 + BAR_DOCS, board: 33 + BAR_DOCS, reports: 15 + BAR_DOCS });
|
|
27
30
|
|
|
28
31
|
/* ── shoot.js audit(), copied verbatim (scratchpad/specimens2/shoot.js, 2026-10-05) ─────────────────────────────── */
|
|
29
32
|
// runs in the page
|
|
@@ -149,4 +152,4 @@ function installCounter(page) {
|
|
|
149
152
|
return page.addInitScript({ content: 'window.__countIn = ' + countIn.toString() + ';' });
|
|
150
153
|
}
|
|
151
154
|
|
|
152
|
-
module.exports = { EXPECT, SPECIMEN_A, audit, countIn, stableCount, installCounter };
|
|
155
|
+
module.exports = { AGENDA_MONTH, EXPECT, SPECIMEN_A, audit, countIn, stableCount, installCounter };
|
package/workspace/guide/today.md
CHANGED
|
@@ -30,11 +30,11 @@ An agent job can stop with its session still open, for example when the agent as
|
|
|
30
30
|
|
|
31
31
|
Each job session is named "Job ·" and the first words of the job, so the session list stays short.
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
The Agenda month is at the top of the left column. **Agent results** comes under it, counts the jobs and lists each finished one with its draft summary or the reason it failed. Your goals for today come under Agent results. The day is open when you go to Agenda, also before you press **Prepare my day**. The other things that wait for you, such as outcome checks, report drafts and sessions, are in **Also waiting for you** at the end of the left column. When the day is folded, they show under it.
|
|
34
34
|
|
|
35
35
|
### The Agenda month
|
|
36
36
|
|
|
37
|
-
The menu calls this page **Agenda**. At the top of the left column is the month, with today marked. Each week starts with its number, for example W41.
|
|
37
|
+
The menu calls this page **Agenda**. At the top of the left column is the month, with today marked. When a day shows no meetings yet, press **Prepare my day** (or **Prepare again**): the morning-brief session reads your calendar and fills the month. Each week starts with its number, for example W41.
|
|
38
38
|
|
|
39
39
|
- Press a day to see its agenda under the month. Three tiles open the agenda: the time in meetings, the meeting that matters most, and your prep.
|
|
40
40
|
- Press a week number to see the agenda of that week, day by day.
|
package/workspace/package.json
CHANGED
|
@@ -42,7 +42,8 @@ const store = {
|
|
|
42
42
|
get(k) { try { return localStorage.getItem(k); } catch { return null; } },
|
|
43
43
|
set(k, v) { try { localStorage.setItem(k, v); } catch { /* private window: the default applies */ } },
|
|
44
44
|
};
|
|
45
|
-
|
|
45
|
+
// A new key: a fold stored by the old Today page must not hide the Agenda month.
|
|
46
|
+
const OPEN_KEY = 'pmos.agenda.day.open';
|
|
46
47
|
const SEEN_KEY = 'pmos.today.day.seen';
|
|
47
48
|
let seen = new Set();
|
|
48
49
|
try { seen = new Set(JSON.parse(store.get(SEEN_KEY) || '[]')); } catch { seen = new Set(); }
|
|
@@ -836,7 +837,7 @@ export function daySection({ ws, setState, openIni, owed, here, all } = {}) {
|
|
|
836
837
|
ensure(ws);
|
|
837
838
|
const c = cache.get(ws) || {};
|
|
838
839
|
const m = model(c.data, { here: here || null, all: !!all });
|
|
839
|
-
const open = forced !== null ? forced : ui.open !== null ? ui.open :
|
|
840
|
+
const open = forced !== null ? forced : ui.open !== null ? ui.open : true;
|
|
840
841
|
if (!open) {
|
|
841
842
|
return el('section', { class: 'td-day', 'data-today': 'day', 'data-open': 'false', 'aria-label': D.title },
|
|
842
843
|
button({ label: D.toggle(m.needs), variant: 'ghost', iconEnd: 'chevron-right', attrs: { 'data-day': 'toggle', 'aria-expanded': 'false' }, onClick: () => fold(true) }));
|
|
@@ -863,7 +864,7 @@ export function daySection({ ws, setState, openIni, owed, here, all } = {}) {
|
|
|
863
864
|
c.error ? el('p', { class: 'td-day__run td-day__run--failed', role: 'status', 'data-day': 'error' }, D.refused(c.error)) : null,
|
|
864
865
|
m.d && m.d.legacy ? note(D.oldServer) : null,
|
|
865
866
|
el('div', { class: 'td-day__cols' },
|
|
866
|
-
el('div', { class: 'td-day__left' },
|
|
867
|
+
el('div', { class: 'td-day__left' }, agenda(ctx), summaryPanel(ctx), goalsPanel(ctx), jobsPanel(ctx), mentionsPanel(ctx), waitingPanel(owed)),
|
|
867
868
|
detail(ctx)));
|
|
868
869
|
}
|
|
869
870
|
|