create-pmos 0.52.0 → 0.53.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 +2 -2
- package/payload/mods/pmos-cockpit/README.md +13 -0
- package/payload/mods/pmos-cockpit/hooks/lib/commands.mjs +2 -1
- package/payload/mods/pmos-cockpit/hooks/lib/grants.mjs +41 -11
- package/payload/mods/pmos-cockpit/hooks/lib/guard.mjs +228 -8
- package/payload/mods/pmos-cockpit/hooks/register.tsx +11 -3
- package/payload/planning/evals/eval-calibration.md +1 -1
- package/payload/planning/okrs/health-budgets.md +1 -1
- package/payload/scripts/plan-items-stage.js +271 -0
- package/payload/scripts/pmos-log.sh +18 -7
- package/payload/scripts/workflow-state.js +28 -2
- package/payload/state/discoveries.md +1 -1
- package/payload/state/log.md +1 -1
- package/workspace/README.md +2 -0
- package/workspace/REMOTE.md +24 -63
- package/workspace/bin/pmos.js +19 -3
- package/workspace/cut-stub.js +40 -0
- package/workspace/first-paint-audit.js +145 -0
- package/workspace/fixtures/capture/requirements/capture-2026-10-04-1.md +10 -0
- package/workspace/fixtures/initiatives-api/list.json +176 -0
- package/workspace/fixtures/initiatives-api/post-403.json +5 -0
- package/workspace/fixtures/initiatives-api/post-ok.json +10 -0
- package/workspace/fixtures/initiatives-api/roadmap.json +208 -0
- package/workspace/fixtures/initiatives-api/sheet.json +112 -0
- package/workspace/fixtures/report-api/draft.json +177 -0
- package/workspace/fixtures/reports-page/draft-biweekly-2026-10-16.md +97 -0
- package/workspace/fixtures/today-api/provider-rows.json +204 -0
- package/workspace/fixtures/today-api/seam-probe-kinds.json +5 -0
- package/workspace/guide/board.md +81 -0
- package/workspace/guide/breakdown.md +154 -0
- package/workspace/guide/command-palette.md +75 -0
- package/workspace/guide/index.md +28 -17
- package/workspace/guide/initiatives-roadmap.md +130 -0
- package/workspace/guide/initiatives-screen.md +89 -0
- package/workspace/guide/initiatives-timeline.md +57 -0
- package/workspace/guide/integrated-work.md +94 -0
- package/workspace/guide/knowledge-graph.md +3 -68
- package/workspace/guide/launcher.md +51 -0
- package/workspace/guide/layout.md +102 -32
- package/workspace/guide/live-notes.md +3 -3
- package/workspace/guide/pm-only-acts.md +89 -0
- package/workspace/guide/pm-only-lines.md +61 -0
- package/workspace/guide/proactive-engine.md +21 -5
- package/workspace/guide/reports-page.md +80 -0
- package/workspace/guide/reports.md +73 -0
- package/workspace/guide/timeline.md +70 -0
- package/workspace/guide/today.md +85 -0
- package/workspace/guide/validate-with-typesafe.md +1 -1
- package/workspace/lib/actor.js +91 -0
- package/workspace/lib/board-cache.js +32 -2
- package/workspace/lib/board-cli.js +108 -0
- package/workspace/lib/board-fold.js +232 -0
- package/workspace/lib/breakdown-export.js +75 -0
- package/workspace/lib/brief.js +20 -2
- package/workspace/lib/capture.js +98 -0
- package/workspace/lib/engine/plan-items-stage.js +271 -0
- package/workspace/lib/engine/workflow-state.js +28 -2
- package/workspace/lib/factory-join.js +158 -0
- package/workspace/lib/goals.js +165 -0
- package/workspace/lib/grant-mint.js +113 -0
- package/workspace/lib/health-rules-factory.js +92 -0
- package/workspace/lib/health-rules-plan.js +164 -0
- package/workspace/lib/health.js +79 -0
- package/workspace/lib/initiative-cli.js +222 -0
- package/workspace/lib/initiative-display.js +183 -0
- package/workspace/lib/initiative-needs.js +127 -0
- package/workspace/lib/initiative-rows.js +210 -0
- package/workspace/lib/initiative-writer.js +141 -0
- package/workspace/lib/issues.js +206 -0
- package/workspace/lib/item-cli.js +195 -0
- package/workspace/lib/item-spans.js +137 -0
- package/workspace/lib/launcher-cli.js +207 -0
- package/workspace/lib/measure-cli.js +100 -0
- package/workspace/lib/measurements.js +189 -0
- package/workspace/lib/mobile-nav.js +57 -53
- package/workspace/lib/needs-providers.js +120 -0
- package/workspace/lib/placements.js +440 -0
- package/workspace/lib/plan-items.js +922 -0
- package/workspace/lib/plan-ledgers.js +85 -0
- package/workspace/lib/plan-rules.js +72 -0
- package/workspace/lib/plan-tree.js +380 -0
- package/workspace/lib/pm-guard.js +174 -0
- package/workspace/lib/pm-lines-needs.js +331 -0
- package/workspace/lib/pmos-verbs.js +69 -0
- package/workspace/lib/proactive-cli.js +58 -2
- package/workspace/lib/proactive.js +9 -6
- package/workspace/lib/qr.js +293 -0
- package/workspace/lib/remote-access.js +93 -1
- package/workspace/lib/report-cli.js +152 -0
- package/workspace/lib/report-draft.js +578 -0
- package/workspace/lib/report-needs.js +213 -0
- package/workspace/lib/route-modules.js +128 -0
- package/workspace/lib/routes-board.js +91 -0
- package/workspace/lib/routes-capture.js +52 -0
- package/workspace/lib/routes-initiatives.js +371 -0
- package/workspace/lib/routes-reports.js +163 -0
- package/workspace/lib/routes-timeline.js +197 -0
- package/workspace/lib/routes-today.js +32 -0
- package/workspace/lib/today-cli.js +99 -0
- package/workspace/lib/today.js +333 -0
- package/workspace/lib/triage.js +163 -0
- package/workspace/lib/verify-work-cli.js +81 -0
- package/workspace/lib/work-check-needs.js +99 -0
- package/workspace/package-lock.json +1 -1
- package/workspace/package.json +4 -5
- package/workspace/public/icons/apple-touch-icon.png +0 -0
- package/workspace/public/icons/icon-192.png +0 -0
- package/workspace/public/icons/icon-512.png +0 -0
- package/workspace/public/index.html +40 -19
- package/workspace/public/pm/app.js +330 -30
- package/workspace/public/pm/bd-board.js +113 -0
- package/workspace/public/pm/bd-drag.js +59 -0
- package/workspace/public/pm/bd-model.js +152 -0
- package/workspace/public/pm/bd-timeline.js +233 -0
- package/workspace/public/pm/bd-tree.js +244 -0
- package/workspace/public/pm/board-copy.js +57 -0
- package/workspace/public/pm/breakdown-api.js +58 -0
- package/workspace/public/pm/breakdown-copy.js +138 -0
- package/workspace/public/pm/components.css +3135 -0
- package/workspace/public/pm/cycle-review.js +125 -0
- package/workspace/public/pm/data.js +40 -187
- package/workspace/public/pm/dest-board.js +438 -0
- package/workspace/public/pm/dest-initiatives.js +134 -0
- package/workspace/public/pm/dest-reports.js +270 -0
- package/workspace/public/pm/dest-settings.js +217 -0
- package/workspace/public/pm/dest-today.js +182 -0
- package/workspace/public/pm/dialogs.js +88 -0
- package/workspace/public/pm/display-word.js +56 -0
- package/workspace/public/pm/dock.js +175 -0
- package/workspace/public/pm/fixture.js +8 -227
- package/workspace/public/pm/frame-copy.js +99 -0
- package/workspace/public/pm/handoff-box.js +82 -0
- package/workspace/public/pm/http.js +88 -0
- package/workspace/public/pm/icons.js +53 -0
- package/workspace/public/pm/initiative-list.js +218 -0
- package/workspace/public/pm/initiative-sheet.js +261 -0
- package/workspace/public/pm/initiatives-api.js +59 -0
- package/workspace/public/pm/initiatives-copy.js +215 -0
- package/workspace/public/pm/initiatives-timeline-copy.js +59 -0
- package/workspace/public/pm/initiatives-timeline.js +410 -0
- package/workspace/public/pm/initiatives-ui.js +123 -0
- package/workspace/public/pm/item-sheet.js +251 -0
- package/workspace/public/pm/keep-card.js +204 -0
- package/workspace/public/pm/lifecycle.js +7 -1
- package/workspace/public/pm/mobile.css +49 -20
- package/workspace/public/pm/mobile.js +157 -29
- package/workspace/public/pm/modes-live.js +7 -883
- package/workspace/public/pm/modes.js +32 -1024
- package/workspace/public/pm/new-initiative-sheet.js +74 -0
- package/workspace/public/pm/next-step-ui.js +3 -2
- package/workspace/public/pm/palette-copy.js +51 -0
- package/workspace/public/pm/palette.js +312 -0
- package/workspace/public/pm/panel-breakdown.js +702 -0
- package/workspace/public/pm/panel-cockpit.js +63 -295
- package/workspace/public/pm/panel-detail.js +25 -172
- package/workspace/public/pm/panel-initiatives.js +1 -19
- package/workspace/public/pm/panel-repos.js +31 -81
- package/workspace/public/pm/panel-tabs.js +200 -111
- package/workspace/public/pm/panel-trees.js +5 -2
- package/workspace/public/pm/portfolio-report.js +61 -0
- package/workspace/public/pm/primitives.js +656 -0
- package/workspace/public/pm/print.css +33 -0
- package/workspace/public/pm/provider-cards.js +136 -0
- package/workspace/public/pm/registry.js +194 -0
- package/workspace/public/pm/release-card.js +110 -0
- package/workspace/public/pm/report-view.js +309 -0
- package/workspace/public/pm/reports-copy.js +114 -0
- package/workspace/public/pm/roadmap.js +271 -0
- package/workspace/public/pm/sig-watch.js +41 -0
- package/workspace/public/pm/state.js +8 -4
- package/workspace/public/pm/status-banner.js +13 -5
- package/workspace/public/pm/tab-doc.js +2 -4
- package/workspace/public/pm/tab-term.js +12 -2
- package/workspace/public/pm/tab-web.js +3 -2
- package/workspace/public/pm/timeline-copy.js +48 -0
- package/workspace/public/pm/today-cards.js +244 -0
- package/workspace/public/pm/today-copy.js +126 -0
- package/workspace/public/pm/today-goals.js +172 -0
- package/workspace/public/pm/tokens.css +16 -18
- package/workspace/public/pm/topbar.js +102 -0
- package/workspace/public/pm/triage-card.js +60 -0
- package/workspace/public/pm/undo-hold.js +103 -0
- package/workspace/public/pm/view-addrepo.js +2 -1
- package/workspace/public/pm/view-livenotes.js +3 -1
- package/workspace/public/pm/view-today.js +7 -162
- package/workspace/public/vendor/Sortable.min.js +2 -0
- package/workspace/public/vendor/lucide-sprite.js +79 -0
- package/workspace/replaced-tests.json +2877 -0
- package/workspace/run-tests.js +56 -5
- package/workspace/server.js +446 -40
- package/workspace/sheet-answer.js +61 -0
- package/workspace/skills/measure.skill +41 -0
- package/workspace/skills/morning-brief.skill +15 -9
- package/workspace/skills/report-biweekly.skill +23 -25
- package/workspace/skills/tracker-refresh.skill +50 -0
- package/workspace/test-files.json +21 -3
- package/workspace/test-lists/base.json +6 -0
- package/workspace/test-lists/run2-a.json +6 -0
- package/workspace/test-lists/run2-b.json +13 -0
- package/workspace/test-lists/run2-c.json +19 -0
- package/workspace/test-lists/run2-d.json +22 -0
- package/workspace/test-lists/run3-0.json +5 -0
- package/workspace/test-lists/run3-a.json +5 -0
- package/workspace/test-lists/run3-b.json +6 -0
- package/workspace/test-lists/run3-c.json +15 -0
- package/workspace/test-lists/run3-d.json +6 -0
- package/workspace/test-lists/run4-a.json +8 -0
- package/workspace/test-lists/run4-b.json +6 -0
- package/workspace/test-lists/run4-c.json +13 -0
- package/workspace/test-lists/run4-d.json +9 -0
- package/workspace/test-lists/run5-a.json +6 -0
- package/workspace/test-lists/run5-b.json +6 -0
- package/workspace/test-lists/run5-c.json +15 -0
- package/workspace/test-lists/workspace-launcher.json +5 -0
- package/workspace/test-lists/workspace-phone-app.json +5 -0
- package/workspace/test-run.js +27 -1
- package/workspace/third-party/README.md +44 -0
- package/workspace/third-party/lucide-static-1.52.0.LICENSE +43 -0
- package/workspace/third-party/sortablejs-1.15.7.LICENSE +21 -0
- package/workspace/design-parity.js +0 -673
- package/workspace/public/pm/tab-task.js +0 -86
- package/workspace/public/pm/view-guide.js +0 -141
- package/workspace/public/pm/view-knowledge.js +0 -225
- package/workspace/public/pm/view-memory.js +0 -122
- package/workspace/public/pm/view-portfolio.js +0 -153
- package/workspace/public/pm/view-reports.js +0 -190
- package/workspace/public/pm/view-scheduled.js +0 -161
- package/workspace/public/pm/view-skills.js +0 -216
|
@@ -0,0 +1,2877 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_comment": "The assertions pm-os-absorb Run 3 may remove or rewrite (D86 point 5 \"Lift and replace\"; PRD R28 and R30). Each entry names a file, the base lines or names it covers, why it goes and what asserts the behaviour instead. pm_approval is null until the PM approves that entry; replaced-tests.test.js --merge fails on any null. Nobody but the PM, through slice 3D, fills pm_approval. A slice that must remove an assertion not listed here stops, writes it to runs/issues/<slice>.md, and 3D adds the entry for the PM. `base` is the commit SHA every entry is read against (base_ref names the branch it was cut from); the suite compares the working tree to that commit and to nothing that moves, so a line number is a line of that commit and never shifts. `sanctioned` lists, with the run that owns them, assertion changes made by Runs 2, 4 and 5 that this run also sees; they need no PM approval from this list. Entries are written to be read in one sitting: one per section of a suite, never one per assertion, except where a section mixes assertions that stay.",
|
|
3
|
+
"base": "c01a613d88edfd4aeba4df7f5b63b550431481b8",
|
|
4
|
+
"base_ref": "pm-os-absorb-base",
|
|
5
|
+
"groups": {
|
|
6
|
+
"A": "Lock instruments: the parity comparator and the fixture transcription checks.",
|
|
7
|
+
"B": "Browser suites that render the prototype fixture and assert its DOM, plus the guard that kept Run 1 out of the lock.",
|
|
8
|
+
"C": "Suites that transcribe a cockpit-mockup board into exact DOM assertions.",
|
|
9
|
+
"D": "Static assertions in test.js about the old phone and terminal layout.",
|
|
10
|
+
"E": "Suites the new frame or a cut breaks through navigation, native dialogs or a cut view. Only the assertions the frame or a cut breaks are listed."
|
|
11
|
+
},
|
|
12
|
+
"changes": {
|
|
13
|
+
"removed": "The assertion goes and nothing asserts it afterwards.",
|
|
14
|
+
"retired": "The assertion goes with the instrument or surface it belonged to; the replacement field says what, if anything, takes over.",
|
|
15
|
+
"replaced": "The assertion may be renamed, split or moved to another suite; the replacement field names what asserts the behaviour instead.",
|
|
16
|
+
"rewritten": "The assertion stays under the same name and the same count; only how the suite reaches the surface changes. A rename or a deletion under a rewritten entry fails."
|
|
17
|
+
},
|
|
18
|
+
"not_listed": "pm-r7, pm-r8, pm-r10, pm-r11, pm-r12 and pm-r21 drive no cut surface, or only through helpers whose assertions keep their text (pm-r11 has no browser; pm-r21 reaches its tab by a repository button helper, not by an assertion). If a slice finds one of their assertions must change, it reports it and 3D lists it.",
|
|
19
|
+
"sanctioned": [
|
|
20
|
+
{
|
|
21
|
+
"id": "S2A-R9",
|
|
22
|
+
"file": "workspace/plan-routes.test.js",
|
|
23
|
+
"run": "2A",
|
|
24
|
+
"ref": "contract-run2 done_criteria 14 (the plan-routes.test.js Origin cases)",
|
|
25
|
+
"reason": "R9 asserted the route's own no-Origin text, which named the terminal route. After Run 2 the route runs pm-guard first, so R9 now asserts pm-guard's refusal; the 403 and the nothing-written check stay.",
|
|
26
|
+
"names": ["R9 a POST with no Origin is 403 and names the terminal route; nothing is written"]
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"id": "STG-SLACK",
|
|
30
|
+
"file": "workspace/proactive.test.js",
|
|
31
|
+
"run": "today-goals",
|
|
32
|
+
"ref": "planning/prd/today-goals-prd.md G2 (slack becomes a brief source)",
|
|
33
|
+
"reason": "These four assertions used slack as the example of an unknown brief source. today-goals G2 makes slack a known source, so each now uses teams as the unknown name; the refusal and its reason are asserted unchanged.",
|
|
34
|
+
"names": [
|
|
35
|
+
"G5 a non-object, a bad date and an unknown source are refused with the reason",
|
|
36
|
+
"G6 a confidence outside 0 to 1, a bad owner, a bad effort, a missing why_now and an unknown item source are each refused",
|
|
37
|
+
"G14 the new settings are checked: name length, source names, booleans",
|
|
38
|
+
"I6 an unknown brief source is refused with the allowed names"
|
|
39
|
+
]
|
|
40
|
+
}
|
|
41
|
+
],
|
|
42
|
+
"entries": [
|
|
43
|
+
{
|
|
44
|
+
"id": "A01",
|
|
45
|
+
"group": "A",
|
|
46
|
+
"file": "workspace/design-parity.js",
|
|
47
|
+
"section": "both modes: --board=WsA (CI job parity) and --states (test:parity:four-panel)",
|
|
48
|
+
"change": "retired",
|
|
49
|
+
"slice": "3D",
|
|
50
|
+
"file_only": true,
|
|
51
|
+
"reason": "The lock instrument. D86 point 5 lifts the lock: the app is no longer held to the cockpit mockup or the four-panel prototype. --states already fails on the base and is not a baseline.",
|
|
52
|
+
"replacement": "node conformance-gate.js --base <ref> (R28) over every touched file; the parity CI job and test.needs entry are deleted in 3D.",
|
|
53
|
+
"pm_approval": {
|
|
54
|
+
"by": "wawan",
|
|
55
|
+
"at": "2026-10-05T21:26:13Z",
|
|
56
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
57
|
+
"choice": "Approve all"
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"id": "A02",
|
|
62
|
+
"group": "A",
|
|
63
|
+
"file": "workspace/fixture-parity.test.mjs",
|
|
64
|
+
"section": "the transcription of the seed tables: DATA, KNOW, FLOWS, PROFILES, INTG, SKILLS, SCHED, AGENTS, MEMORY, ALLGROUPS, INGESTED_KNOW, RAW_DOCS (lines 43 to 101)",
|
|
65
|
+
"change": "retired",
|
|
66
|
+
"slice": "3D",
|
|
67
|
+
"reason": "Each check holds fixture.js to a line range of the prototype. 3D edits the fixture.js tables the cuts remove (Memory, Knowledge, Skills, Scheduled, Agents, Connect, the morning brief), and every such edit breaks a check by design.",
|
|
68
|
+
"replacement": "None for the tables 3D removes (Memory, Knowledge, Skills, Scheduled, Agents, Connect, the morning brief). The tables the frame still uses are asserted by the suites that render them. The checks outside these lines stay: the derivations of the kept tables, the terminal and link helpers, the new-initiative flow and the frontmatter parity.",
|
|
69
|
+
"pm_approval": {
|
|
70
|
+
"by": "wawan",
|
|
71
|
+
"at": "2026-10-05T21:26:13Z",
|
|
72
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
73
|
+
"choice": "Approve all"
|
|
74
|
+
},
|
|
75
|
+
"lines": [
|
|
76
|
+
43,
|
|
77
|
+
101
|
|
78
|
+
]
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"id": "A05",
|
|
82
|
+
"group": "A",
|
|
83
|
+
"file": "workspace/fixture-parity.test.mjs",
|
|
84
|
+
"section": "knowledge groups and search over the removed Knowledge table: groups gids to first hit (lines 155 to 163)",
|
|
85
|
+
"change": "retired",
|
|
86
|
+
"slice": "3D",
|
|
87
|
+
"lines": [
|
|
88
|
+
155,
|
|
89
|
+
163
|
|
90
|
+
],
|
|
91
|
+
"reason": "These run groupsFor, visibleGroups and searchHits over the Knowledge table, which 3D removes (Knowledge becomes a Cmd+K scope in 3C).",
|
|
92
|
+
"replacement": "pm-palette-test.js (3C): the Knowledge scope.",
|
|
93
|
+
"pm_approval": {
|
|
94
|
+
"by": "wawan",
|
|
95
|
+
"at": "2026-10-05T21:26:13Z",
|
|
96
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
97
|
+
"choice": "Approve all"
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"id": "A06",
|
|
102
|
+
"group": "A",
|
|
103
|
+
"file": "workspace/fixture-parity.test.mjs",
|
|
104
|
+
"section": "flowUse and focusEnds/focusSaw over the removed Connect and Focus tables (lines 166 to 170)",
|
|
105
|
+
"change": "retired",
|
|
106
|
+
"slice": "3D",
|
|
107
|
+
"lines": [
|
|
108
|
+
166,
|
|
109
|
+
170
|
|
110
|
+
],
|
|
111
|
+
"reason": "Each derives from a table 3D removes: the Connect flows and the Focus view (R29).",
|
|
112
|
+
"replacement": "None: the Connect and Focus views are cut. pm-frame-test.js (3D absence block) asserts both are gone.",
|
|
113
|
+
"pm_approval": {
|
|
114
|
+
"by": "wawan",
|
|
115
|
+
"at": "2026-10-05T21:26:13Z",
|
|
116
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
117
|
+
"choice": "Approve all"
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"id": "A07",
|
|
122
|
+
"group": "A",
|
|
123
|
+
"file": "workspace/fixture-parity.test.mjs",
|
|
124
|
+
"section": "settings drawer: two groups, no workflow, drawer labels (lines 206 to 210)",
|
|
125
|
+
"change": "retired",
|
|
126
|
+
"slice": "3D",
|
|
127
|
+
"lines": [
|
|
128
|
+
206,
|
|
129
|
+
210
|
|
130
|
+
],
|
|
131
|
+
"reason": "The settings drawer is cut (R29); its repository block moves into the gear.",
|
|
132
|
+
"replacement": "pm-frame-test.js (3D absence block): the settings drawer is gone; the gear holds the repository list.",
|
|
133
|
+
"pm_approval": {
|
|
134
|
+
"by": "wawan",
|
|
135
|
+
"at": "2026-10-05T21:26:13Z",
|
|
136
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
137
|
+
"choice": "Approve all"
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"id": "A03",
|
|
142
|
+
"group": "A",
|
|
143
|
+
"file": "workspace/markdown.test.mjs",
|
|
144
|
+
"section": "§1 the prototype's four markdown constructs, node for node",
|
|
145
|
+
"change": "rewritten",
|
|
146
|
+
"slice": "3D",
|
|
147
|
+
"lines": [
|
|
148
|
+
63,
|
|
149
|
+
77
|
|
150
|
+
],
|
|
151
|
+
"reason": "Asserts the prototype's parity shape (one span per paragraph, the prototype's styles). Changes only if 3D changes how fixture documents render.",
|
|
152
|
+
"replacement": "The same constructs asserted against the rendered shape of the frame; the construct list does not shrink.",
|
|
153
|
+
"pm_approval": {
|
|
154
|
+
"by": "wawan",
|
|
155
|
+
"at": "2026-10-05T21:26:13Z",
|
|
156
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
157
|
+
"choice": "Approve all"
|
|
158
|
+
}
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
"id": "A04",
|
|
162
|
+
"group": "A",
|
|
163
|
+
"file": "workspace/markdown.test.mjs",
|
|
164
|
+
"section": "§1b the fixture render is byte-for-byte unchanged for every seed document",
|
|
165
|
+
"change": "rewritten",
|
|
166
|
+
"slice": "3D",
|
|
167
|
+
"lines": [
|
|
168
|
+
111,
|
|
169
|
+
119
|
|
170
|
+
],
|
|
171
|
+
"reason": "Pins the render of every seed document to the pre-parity bytes. Changes only if 3D changes fixture rendering.",
|
|
172
|
+
"replacement": "The same corpus rendered and compared to a new golden; the corpus does not shrink.",
|
|
173
|
+
"pm_approval": {
|
|
174
|
+
"by": "wawan",
|
|
175
|
+
"at": "2026-10-05T21:26:13Z",
|
|
176
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
177
|
+
"choice": "Approve all"
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"id": "B01",
|
|
182
|
+
"group": "B",
|
|
183
|
+
"file": "workspace/pm-shell-test.js",
|
|
184
|
+
"section": "the grid: the root grid, four hosts, four tracks, the mockup lockup, the status bar",
|
|
185
|
+
"change": "removed",
|
|
186
|
+
"slice": "3A",
|
|
187
|
+
"lines": [
|
|
188
|
+
121,
|
|
189
|
+
141
|
|
190
|
+
],
|
|
191
|
+
"reason": "Asserts the four-column body, the 64px rail and the mockup top bar. R9 replaces them with one top bar and no left sidebar.",
|
|
192
|
+
"replacement": "pm-frame-test.js (3A): the top bar, the data-dest hosts and the dock, asserted as R9 and R10 behaviour",
|
|
193
|
+
"pm_approval": {
|
|
194
|
+
"by": "wawan",
|
|
195
|
+
"at": "2026-10-05T21:26:13Z",
|
|
196
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
197
|
+
"choice": "Approve all"
|
|
198
|
+
}
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
"id": "B02",
|
|
202
|
+
"group": "B",
|
|
203
|
+
"file": "workspace/pm-shell-test.js",
|
|
204
|
+
"section": "fold controls and collapse rails",
|
|
205
|
+
"change": "removed",
|
|
206
|
+
"slice": "3A",
|
|
207
|
+
"lines": [
|
|
208
|
+
159,
|
|
209
|
+
187
|
|
210
|
+
],
|
|
211
|
+
"reason": "Asserts the list and detail fold controls and the 36px strips. The frame has no list or detail column to fold; the dock has its own rail.",
|
|
212
|
+
"replacement": "pm-frame-test.js (3A): the dock is open on Today and a 44px rail on every other destination, never expands by itself, and Cmd+J toggles it.",
|
|
213
|
+
"pm_approval": {
|
|
214
|
+
"by": "wawan",
|
|
215
|
+
"at": "2026-10-05T21:26:13Z",
|
|
216
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
217
|
+
"choice": "Approve all"
|
|
218
|
+
}
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
"id": "B03",
|
|
222
|
+
"group": "B",
|
|
223
|
+
"file": "workspace/pm-shell-test.js",
|
|
224
|
+
"section": "theme: the chrome keeps the dark ink in the light theme",
|
|
225
|
+
"change": "replaced",
|
|
226
|
+
"slice": "3D",
|
|
227
|
+
"lines": [
|
|
228
|
+
225,
|
|
229
|
+
227
|
|
230
|
+
],
|
|
231
|
+
"reason": "R27 makes the chrome follow the theme in both themes; only the terminal stays dark. The old rule asserts the opposite for the tabs panel and the top bar.",
|
|
232
|
+
"replacement": "pm-r27-test.js (3D): the chrome follows the theme in both themes; the terminal stays dark in both (the assertions at lines 209 to 213 stay as they are).",
|
|
233
|
+
"pm_approval": {
|
|
234
|
+
"by": "wawan",
|
|
235
|
+
"at": "2026-10-05T21:26:13Z",
|
|
236
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
237
|
+
"choice": "Approve all"
|
|
238
|
+
}
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
"id": "B04",
|
|
242
|
+
"group": "B",
|
|
243
|
+
"file": "workspace/pm-shell-test.js",
|
|
244
|
+
"section": "keyboard: Cmd+K paints the palette into the shell's own host and leaves the list folded",
|
|
245
|
+
"change": "replaced",
|
|
246
|
+
"slice": "3C",
|
|
247
|
+
"lines": [
|
|
248
|
+
246,
|
|
249
|
+
247
|
|
250
|
+
],
|
|
251
|
+
"reason": "The palette opens as the Cmd+K surface of the frame, not as a paint into a shell host beside a folded list.",
|
|
252
|
+
"replacement": "pm-palette-test.js (3C): Cmd+K opens, Esc closes; the keys g t, g i, g b, g r are asserted in pm-frame-test.js.",
|
|
253
|
+
"pm_approval": {
|
|
254
|
+
"by": "wawan",
|
|
255
|
+
"at": "2026-10-05T21:26:13Z",
|
|
256
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
257
|
+
"choice": "Approve all"
|
|
258
|
+
}
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
"id": "B05",
|
|
262
|
+
"group": "B",
|
|
263
|
+
"file": "workspace/pm-shell-test.js",
|
|
264
|
+
"section": "the panel-4 host is the last track",
|
|
265
|
+
"change": "replaced",
|
|
266
|
+
"slice": "3A",
|
|
267
|
+
"lines": [
|
|
268
|
+
290,
|
|
269
|
+
290
|
|
270
|
+
],
|
|
271
|
+
"reason": "Asserts the terminal host is the last of four tracks. The terminal moves into the dock; its identity assertions at lines 287 to 289 stay as they are.",
|
|
272
|
+
"replacement": "pm-frame-test.js (3A): the dock host is one node that is never re-created or re-parented.",
|
|
273
|
+
"pm_approval": {
|
|
274
|
+
"by": "wawan",
|
|
275
|
+
"at": "2026-10-05T21:26:13Z",
|
|
276
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
277
|
+
"choice": "Approve all"
|
|
278
|
+
}
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
"id": "B06",
|
|
282
|
+
"group": "B",
|
|
283
|
+
"file": "workspace/pm-shell-test.js",
|
|
284
|
+
"section": "fixture mode writes nothing and ignores what is stored",
|
|
285
|
+
"change": "removed",
|
|
286
|
+
"slice": "3D",
|
|
287
|
+
"lines": [
|
|
288
|
+
311,
|
|
289
|
+
311
|
|
290
|
+
],
|
|
291
|
+
"reason": "The prototype fixture mode is cut (D86 point 5), so a block that asserts the prototype's DOM has nothing to run on.",
|
|
292
|
+
"replacement": "None: the fixture mode is gone. The live arrangement is asserted by the sanitising block that follows (lines 343 to 366).",
|
|
293
|
+
"pm_approval": {
|
|
294
|
+
"by": "wawan",
|
|
295
|
+
"at": "2026-10-05T21:26:13Z",
|
|
296
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
297
|
+
"choice": "Approve all"
|
|
298
|
+
}
|
|
299
|
+
},
|
|
300
|
+
{
|
|
301
|
+
"id": "B07",
|
|
302
|
+
"group": "B",
|
|
303
|
+
"file": "workspace/pm-repos-test.js",
|
|
304
|
+
"section": "header and rows (fixture): the repository rail",
|
|
305
|
+
"change": "removed",
|
|
306
|
+
"slice": "3A",
|
|
307
|
+
"lines": [
|
|
308
|
+
123,
|
|
309
|
+
151
|
|
310
|
+
],
|
|
311
|
+
"reason": "Asserts the 64px repository rail, its glyphs, sub-lines and rows. R9 moves repositories into the Repository menu of the top bar.",
|
|
312
|
+
"replacement": "pm-frame-test.js (3A): Repository menu lists each repository with its kind and counts, and \"All repositories\".",
|
|
313
|
+
"pm_approval": {
|
|
314
|
+
"by": "wawan",
|
|
315
|
+
"at": "2026-10-05T21:26:13Z",
|
|
316
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
317
|
+
"choice": "Approve all"
|
|
318
|
+
}
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
"id": "B08",
|
|
322
|
+
"group": "B",
|
|
323
|
+
"file": "workspace/pm-repos-test.js",
|
|
324
|
+
"section": "selection (fixture)",
|
|
325
|
+
"change": "removed",
|
|
326
|
+
"slice": "3A",
|
|
327
|
+
"lines": [
|
|
328
|
+
152,
|
|
329
|
+
177
|
|
330
|
+
],
|
|
331
|
+
"reason": "Asserts selecting a rail row in the prototype layout.",
|
|
332
|
+
"replacement": "pm-frame-test.js (3A): choosing a repository in the Repository menu selects it and keeps the destination.",
|
|
333
|
+
"pm_approval": {
|
|
334
|
+
"by": "wawan",
|
|
335
|
+
"at": "2026-10-05T21:26:13Z",
|
|
336
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
337
|
+
"choice": "Approve all"
|
|
338
|
+
}
|
|
339
|
+
},
|
|
340
|
+
{
|
|
341
|
+
"id": "B09",
|
|
342
|
+
"group": "B",
|
|
343
|
+
"file": "workspace/pm-repos-test.js",
|
|
344
|
+
"section": "the collapse control (fixture)",
|
|
345
|
+
"change": "removed",
|
|
346
|
+
"slice": "3A",
|
|
347
|
+
"lines": [
|
|
348
|
+
178,
|
|
349
|
+
192
|
|
350
|
+
],
|
|
351
|
+
"reason": "Asserts the control that folds panel 1 to its rail. There is no repository panel in the frame.",
|
|
352
|
+
"replacement": "pm-frame-test.js (3A): the top bar, the data-dest hosts and the dock, asserted as R9 and R10 behaviour",
|
|
353
|
+
"pm_approval": {
|
|
354
|
+
"by": "wawan",
|
|
355
|
+
"at": "2026-10-05T21:26:13Z",
|
|
356
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
357
|
+
"choice": "Approve all"
|
|
358
|
+
}
|
|
359
|
+
},
|
|
360
|
+
{
|
|
361
|
+
"id": "B10",
|
|
362
|
+
"group": "B",
|
|
363
|
+
"file": "workspace/pm-repos-test.js",
|
|
364
|
+
"section": "settings and tools: the two-group, seven-entry drawer",
|
|
365
|
+
"change": "removed",
|
|
366
|
+
"slice": "3D",
|
|
367
|
+
"lines": [
|
|
368
|
+
193,
|
|
369
|
+
263
|
|
370
|
+
],
|
|
371
|
+
"reason": "R29 cuts the drawer: Focus, Portfolio, Memory, Knowledge, Skills, Validate, Agents, Connect and the rest leave the shell or move to Cmd+K scopes or the gear.",
|
|
372
|
+
"replacement": "pm-frame-test.js absence block (3D): each cut view is absent; the gear holds only repositories, profiles, the default CLI and model, Validate consent and theme.",
|
|
373
|
+
"pm_approval": {
|
|
374
|
+
"by": "wawan",
|
|
375
|
+
"at": "2026-10-05T21:26:13Z",
|
|
376
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
377
|
+
"choice": "Approve all"
|
|
378
|
+
}
|
|
379
|
+
},
|
|
380
|
+
{
|
|
381
|
+
"id": "B11",
|
|
382
|
+
"group": "B",
|
|
383
|
+
"file": "workspace/pm-repos-test.js",
|
|
384
|
+
"section": "add repository (fixture): the form, the ingest log and the local folder path",
|
|
385
|
+
"change": "removed",
|
|
386
|
+
"slice": "3D",
|
|
387
|
+
"lines": [
|
|
388
|
+
264,
|
|
389
|
+
367
|
|
390
|
+
],
|
|
391
|
+
"reason": "Asserts the add-repository form in the prototype's detail panel with fabricated ingest output.",
|
|
392
|
+
"replacement": "The live add-repository path in the gear (the live block below, rewritten as navigation only).",
|
|
393
|
+
"pm_approval": {
|
|
394
|
+
"by": "wawan",
|
|
395
|
+
"at": "2026-10-05T21:26:13Z",
|
|
396
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
397
|
+
"choice": "Approve all"
|
|
398
|
+
}
|
|
399
|
+
},
|
|
400
|
+
{
|
|
401
|
+
"id": "B12",
|
|
402
|
+
"group": "B",
|
|
403
|
+
"file": "workspace/pm-repos-test.js",
|
|
404
|
+
"section": "the live add-repository path, reached from the gear instead of the rail",
|
|
405
|
+
"change": "rewritten",
|
|
406
|
+
"slice": "3A",
|
|
407
|
+
"lines": [
|
|
408
|
+
399,
|
|
409
|
+
437
|
|
410
|
+
],
|
|
411
|
+
"reason": "The assertions stay: a refused add puts nothing on the board, the real server message is shown, no fabricated counts, the folder chooser. Only the way the suite reaches the form changes (R29: the repository list lives in the gear).",
|
|
412
|
+
"replacement": "The same assertions, reached through the gear in the frame.",
|
|
413
|
+
"pm_approval": {
|
|
414
|
+
"by": "wawan",
|
|
415
|
+
"at": "2026-10-05T21:26:13Z",
|
|
416
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
417
|
+
"choice": "Approve all"
|
|
418
|
+
}
|
|
419
|
+
},
|
|
420
|
+
{
|
|
421
|
+
"id": "B13",
|
|
422
|
+
"group": "B",
|
|
423
|
+
"file": "workspace/pm-initiatives-test.js",
|
|
424
|
+
"section": "the board as the prototype files it (fixture)",
|
|
425
|
+
"change": "removed",
|
|
426
|
+
"slice": "3D",
|
|
427
|
+
"lines": [
|
|
428
|
+
103,
|
|
429
|
+
140
|
|
430
|
+
],
|
|
431
|
+
"reason": "The prototype's three-column initiative board is replaced by the Initiatives destination (Roadmap and List, Run 2) inside the frame.",
|
|
432
|
+
"replacement": "pm-initiatives-test.js live block and Run 2's pm-initiatives-dest suites; pm-frame-test.js for the destination host.",
|
|
433
|
+
"pm_approval": {
|
|
434
|
+
"by": "wawan",
|
|
435
|
+
"at": "2026-10-05T21:26:13Z",
|
|
436
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
437
|
+
"choice": "Approve all"
|
|
438
|
+
}
|
|
439
|
+
},
|
|
440
|
+
{
|
|
441
|
+
"id": "B14",
|
|
442
|
+
"group": "B",
|
|
443
|
+
"file": "workspace/pm-initiatives-test.js",
|
|
444
|
+
"section": "the search box is one persistent node (fixture)",
|
|
445
|
+
"change": "removed",
|
|
446
|
+
"slice": "3D",
|
|
447
|
+
"lines": [
|
|
448
|
+
141,
|
|
449
|
+
157
|
|
450
|
+
],
|
|
451
|
+
"reason": "The prototype's three-column initiative board is replaced by the Initiatives destination (Roadmap and List, Run 2) inside the frame.",
|
|
452
|
+
"replacement": "pm-initiatives-test.js live block and Run 2's pm-initiatives-dest suites; pm-frame-test.js for the destination host.",
|
|
453
|
+
"pm_approval": {
|
|
454
|
+
"by": "wawan",
|
|
455
|
+
"at": "2026-10-05T21:26:13Z",
|
|
456
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
457
|
+
"choice": "Approve all"
|
|
458
|
+
}
|
|
459
|
+
},
|
|
460
|
+
{
|
|
461
|
+
"id": "B15",
|
|
462
|
+
"group": "B",
|
|
463
|
+
"file": "workspace/pm-initiatives-test.js",
|
|
464
|
+
"section": "the search filters and forces every group open (fixture)",
|
|
465
|
+
"change": "removed",
|
|
466
|
+
"slice": "3D",
|
|
467
|
+
"lines": [
|
|
468
|
+
158,
|
|
469
|
+
194
|
|
470
|
+
],
|
|
471
|
+
"reason": "The prototype's three-column initiative board is replaced by the Initiatives destination (Roadmap and List, Run 2) inside the frame.",
|
|
472
|
+
"replacement": "pm-initiatives-test.js live block and Run 2's pm-initiatives-dest suites; pm-frame-test.js for the destination host.",
|
|
473
|
+
"pm_approval": {
|
|
474
|
+
"by": "wawan",
|
|
475
|
+
"at": "2026-10-05T21:26:13Z",
|
|
476
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
477
|
+
"choice": "Approve all"
|
|
478
|
+
}
|
|
479
|
+
},
|
|
480
|
+
{
|
|
481
|
+
"id": "B16",
|
|
482
|
+
"group": "B",
|
|
483
|
+
"file": "workspace/pm-initiatives-test.js",
|
|
484
|
+
"section": "selection (fixture)",
|
|
485
|
+
"change": "removed",
|
|
486
|
+
"slice": "3D",
|
|
487
|
+
"lines": [
|
|
488
|
+
195,
|
|
489
|
+
203
|
|
490
|
+
],
|
|
491
|
+
"reason": "The prototype's three-column initiative board is replaced by the Initiatives destination (Roadmap and List, Run 2) inside the frame.",
|
|
492
|
+
"replacement": "pm-initiatives-test.js live block and Run 2's pm-initiatives-dest suites; pm-frame-test.js for the destination host.",
|
|
493
|
+
"pm_approval": {
|
|
494
|
+
"by": "wawan",
|
|
495
|
+
"at": "2026-10-05T21:26:13Z",
|
|
496
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
497
|
+
"choice": "Approve all"
|
|
498
|
+
}
|
|
499
|
+
},
|
|
500
|
+
{
|
|
501
|
+
"id": "B17",
|
|
502
|
+
"group": "B",
|
|
503
|
+
"file": "workspace/pm-initiatives-test.js",
|
|
504
|
+
"section": "matches elsewhere (fixture)",
|
|
505
|
+
"change": "removed",
|
|
506
|
+
"slice": "3D",
|
|
507
|
+
"lines": [
|
|
508
|
+
204,
|
|
509
|
+
244
|
|
510
|
+
],
|
|
511
|
+
"reason": "The prototype's three-column initiative board is replaced by the Initiatives destination (Roadmap and List, Run 2) inside the frame.",
|
|
512
|
+
"replacement": "pm-initiatives-test.js live block and Run 2's pm-initiatives-dest suites; pm-frame-test.js for the destination host.",
|
|
513
|
+
"pm_approval": {
|
|
514
|
+
"by": "wawan",
|
|
515
|
+
"at": "2026-10-05T21:26:13Z",
|
|
516
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
517
|
+
"choice": "Approve all"
|
|
518
|
+
}
|
|
519
|
+
},
|
|
520
|
+
{
|
|
521
|
+
"id": "B18",
|
|
522
|
+
"group": "B",
|
|
523
|
+
"file": "workspace/pm-initiatives-test.js",
|
|
524
|
+
"section": "the file-new row and the model behind the form (fixture)",
|
|
525
|
+
"change": "removed",
|
|
526
|
+
"slice": "3D",
|
|
527
|
+
"lines": [
|
|
528
|
+
245,
|
|
529
|
+
308
|
|
530
|
+
],
|
|
531
|
+
"reason": "The prototype's three-column initiative board is replaced by the Initiatives destination (Roadmap and List, Run 2) inside the frame.",
|
|
532
|
+
"replacement": "pm-initiatives-test.js live block and Run 2's pm-initiatives-dest suites; pm-frame-test.js for the destination host.",
|
|
533
|
+
"pm_approval": {
|
|
534
|
+
"by": "wawan",
|
|
535
|
+
"at": "2026-10-05T21:26:13Z",
|
|
536
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
537
|
+
"choice": "Approve all"
|
|
538
|
+
}
|
|
539
|
+
},
|
|
540
|
+
{
|
|
541
|
+
"id": "B19",
|
|
542
|
+
"group": "B",
|
|
543
|
+
"file": "workspace/pm-initiatives-test.js",
|
|
544
|
+
"section": "a secondary mode keeps the header and the search (fixture)",
|
|
545
|
+
"change": "removed",
|
|
546
|
+
"slice": "3D",
|
|
547
|
+
"lines": [
|
|
548
|
+
309,
|
|
549
|
+
318
|
|
550
|
+
],
|
|
551
|
+
"reason": "The prototype's three-column initiative board is replaced by the Initiatives destination (Roadmap and List, Run 2) inside the frame.",
|
|
552
|
+
"replacement": "pm-initiatives-test.js live block and Run 2's pm-initiatives-dest suites; pm-frame-test.js for the destination host.",
|
|
553
|
+
"pm_approval": {
|
|
554
|
+
"by": "wawan",
|
|
555
|
+
"at": "2026-10-05T21:26:13Z",
|
|
556
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
557
|
+
"choice": "Approve all"
|
|
558
|
+
}
|
|
559
|
+
},
|
|
560
|
+
{
|
|
561
|
+
"id": "B20",
|
|
562
|
+
"group": "B",
|
|
563
|
+
"file": "workspace/pm-detail-test.js",
|
|
564
|
+
"section": "1 header (fixture)",
|
|
565
|
+
"change": "removed",
|
|
566
|
+
"slice": "3D",
|
|
567
|
+
"lines": [
|
|
568
|
+
133,
|
|
569
|
+
150
|
|
570
|
+
],
|
|
571
|
+
"reason": "The prototype's initiative detail panel is replaced by the initiative sheet (Run 2). Task phases and the Task tab are cut (R29).",
|
|
572
|
+
"replacement": "Initiative sheet suites of Run 2; pm-frame-test.js absence block.",
|
|
573
|
+
"pm_approval": {
|
|
574
|
+
"by": "wawan",
|
|
575
|
+
"at": "2026-10-05T21:26:13Z",
|
|
576
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
577
|
+
"choice": "Approve all"
|
|
578
|
+
}
|
|
579
|
+
},
|
|
580
|
+
{
|
|
581
|
+
"id": "B21",
|
|
582
|
+
"group": "B",
|
|
583
|
+
"file": "workspace/pm-detail-test.js",
|
|
584
|
+
"section": "2 task phases (fixture): the phases that open a Task tab",
|
|
585
|
+
"change": "removed",
|
|
586
|
+
"slice": "3D",
|
|
587
|
+
"lines": [
|
|
588
|
+
151,
|
|
589
|
+
257
|
|
590
|
+
],
|
|
591
|
+
"reason": "The prototype's initiative detail panel is replaced by the initiative sheet (Run 2). Task phases and the Task tab are cut (R29).",
|
|
592
|
+
"replacement": "The Breakdown tree (pm-breakdown-test.js, unchanged) carries the work; the absence block asserts the Task tab is gone.",
|
|
593
|
+
"pm_approval": {
|
|
594
|
+
"by": "wawan",
|
|
595
|
+
"at": "2026-10-05T21:26:13Z",
|
|
596
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
597
|
+
"choice": "Approve all"
|
|
598
|
+
}
|
|
599
|
+
},
|
|
600
|
+
{
|
|
601
|
+
"id": "B22",
|
|
602
|
+
"group": "B",
|
|
603
|
+
"file": "workspace/pm-detail-test.js",
|
|
604
|
+
"section": "3 links (fixture)",
|
|
605
|
+
"change": "removed",
|
|
606
|
+
"slice": "3D",
|
|
607
|
+
"lines": [
|
|
608
|
+
258,
|
|
609
|
+
270
|
|
610
|
+
],
|
|
611
|
+
"reason": "The prototype's initiative detail panel is replaced by the initiative sheet (Run 2). Task phases and the Task tab are cut (R29).",
|
|
612
|
+
"replacement": "Initiative sheet suites of Run 2.",
|
|
613
|
+
"pm_approval": {
|
|
614
|
+
"by": "wawan",
|
|
615
|
+
"at": "2026-10-05T21:26:13Z",
|
|
616
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
617
|
+
"choice": "Approve all"
|
|
618
|
+
}
|
|
619
|
+
},
|
|
620
|
+
{
|
|
621
|
+
"id": "B23",
|
|
622
|
+
"group": "B",
|
|
623
|
+
"file": "workspace/pm-detail-test.js",
|
|
624
|
+
"section": "linking: the PM names the record and nothing is invented (fixture)",
|
|
625
|
+
"change": "removed",
|
|
626
|
+
"slice": "3D",
|
|
627
|
+
"lines": [
|
|
628
|
+
271,
|
|
629
|
+
332
|
|
630
|
+
],
|
|
631
|
+
"reason": "The prototype's initiative detail panel is replaced by the initiative sheet (Run 2). Task phases and the Task tab are cut (R29).",
|
|
632
|
+
"replacement": "Initiative sheet suites of Run 2; the live assertions of this suite from line 480 stay.",
|
|
633
|
+
"pm_approval": {
|
|
634
|
+
"by": "wawan",
|
|
635
|
+
"at": "2026-10-05T21:26:13Z",
|
|
636
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
637
|
+
"choice": "Approve all"
|
|
638
|
+
}
|
|
639
|
+
},
|
|
640
|
+
{
|
|
641
|
+
"id": "B24",
|
|
642
|
+
"group": "B",
|
|
643
|
+
"file": "workspace/pm-detail-test.js",
|
|
644
|
+
"section": "4 artifacts (fixture)",
|
|
645
|
+
"change": "removed",
|
|
646
|
+
"slice": "3D",
|
|
647
|
+
"lines": [
|
|
648
|
+
333,
|
|
649
|
+
405
|
|
650
|
+
],
|
|
651
|
+
"reason": "The prototype's initiative detail panel is replaced by the initiative sheet (Run 2). Task phases and the Task tab are cut (R29).",
|
|
652
|
+
"replacement": "Initiative sheet suites of Run 2.",
|
|
653
|
+
"pm_approval": {
|
|
654
|
+
"by": "wawan",
|
|
655
|
+
"at": "2026-10-05T21:26:13Z",
|
|
656
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
657
|
+
"choice": "Approve all"
|
|
658
|
+
}
|
|
659
|
+
},
|
|
660
|
+
{
|
|
661
|
+
"id": "B25",
|
|
662
|
+
"group": "B",
|
|
663
|
+
"file": "workspace/pm-detail-test.js",
|
|
664
|
+
"section": "5 footer (fixture)",
|
|
665
|
+
"change": "removed",
|
|
666
|
+
"slice": "3D",
|
|
667
|
+
"lines": [
|
|
668
|
+
406,
|
|
669
|
+
417
|
|
670
|
+
],
|
|
671
|
+
"reason": "The prototype's initiative detail panel is replaced by the initiative sheet (Run 2). Task phases and the Task tab are cut (R29).",
|
|
672
|
+
"replacement": "Initiative sheet suites of Run 2.",
|
|
673
|
+
"pm_approval": {
|
|
674
|
+
"by": "wawan",
|
|
675
|
+
"at": "2026-10-05T21:26:13Z",
|
|
676
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
677
|
+
"choice": "Approve all"
|
|
678
|
+
}
|
|
679
|
+
},
|
|
680
|
+
{
|
|
681
|
+
"id": "B26",
|
|
682
|
+
"group": "B",
|
|
683
|
+
"file": "workspace/pm-detail-test.js",
|
|
684
|
+
"section": "6 the two error states (fixture)",
|
|
685
|
+
"change": "removed",
|
|
686
|
+
"slice": "3D",
|
|
687
|
+
"lines": [
|
|
688
|
+
418,
|
|
689
|
+
450
|
|
690
|
+
],
|
|
691
|
+
"reason": "The prototype's initiative detail panel is replaced by the initiative sheet (Run 2). Task phases and the Task tab are cut (R29).",
|
|
692
|
+
"replacement": "Initiative sheet suites of Run 2.",
|
|
693
|
+
"pm_approval": {
|
|
694
|
+
"by": "wawan",
|
|
695
|
+
"at": "2026-10-05T21:26:13Z",
|
|
696
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
697
|
+
"choice": "Approve all"
|
|
698
|
+
}
|
|
699
|
+
},
|
|
700
|
+
{
|
|
701
|
+
"id": "B27",
|
|
702
|
+
"group": "B",
|
|
703
|
+
"file": "workspace/pm-tabs-test.js",
|
|
704
|
+
"section": "1 empty state and chrome (fixture)",
|
|
705
|
+
"change": "removed",
|
|
706
|
+
"slice": "3A",
|
|
707
|
+
"lines": [
|
|
708
|
+
155,
|
|
709
|
+
174
|
|
710
|
+
],
|
|
711
|
+
"reason": "Asserts the prototype's tab panel in fixture mode. The tab panel becomes the dock; fixture mode is cut.",
|
|
712
|
+
"replacement": "pm-frame-test.js (3A) for the dock; the live sections of this suite (from line 523) stay.",
|
|
713
|
+
"pm_approval": {
|
|
714
|
+
"by": "wawan",
|
|
715
|
+
"at": "2026-10-05T21:26:13Z",
|
|
716
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
717
|
+
"choice": "Approve all"
|
|
718
|
+
}
|
|
719
|
+
},
|
|
720
|
+
{
|
|
721
|
+
"id": "B28",
|
|
722
|
+
"group": "B",
|
|
723
|
+
"file": "workspace/pm-tabs-test.js",
|
|
724
|
+
"section": "2 a task tab (fixture)",
|
|
725
|
+
"change": "removed",
|
|
726
|
+
"slice": "3D",
|
|
727
|
+
"lines": [
|
|
728
|
+
175,
|
|
729
|
+
211
|
|
730
|
+
],
|
|
731
|
+
"reason": "The Task tab is cut (R29).",
|
|
732
|
+
"replacement": "pm-frame-test.js absence block (3D): no Task tab, no synthetic rung task.",
|
|
733
|
+
"pm_approval": {
|
|
734
|
+
"by": "wawan",
|
|
735
|
+
"at": "2026-10-05T21:26:13Z",
|
|
736
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
737
|
+
"choice": "Approve all"
|
|
738
|
+
}
|
|
739
|
+
},
|
|
740
|
+
{
|
|
741
|
+
"id": "B29",
|
|
742
|
+
"group": "B",
|
|
743
|
+
"file": "workspace/pm-tabs-test.js",
|
|
744
|
+
"section": "3 a doc tab: view, raw, edit, diff (fixture)",
|
|
745
|
+
"change": "removed",
|
|
746
|
+
"slice": "3D",
|
|
747
|
+
"lines": [
|
|
748
|
+
212,
|
|
749
|
+
300
|
|
750
|
+
],
|
|
751
|
+
"reason": "Asserts the prototype's tab panel in fixture mode. The tab panel becomes the dock; fixture mode is cut.",
|
|
752
|
+
"replacement": "The live document assertions in ui-test.js (DOC1 to DOC8) and this suite's live sections 8b to 8f.",
|
|
753
|
+
"pm_approval": {
|
|
754
|
+
"by": "wawan",
|
|
755
|
+
"at": "2026-10-05T21:26:13Z",
|
|
756
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
757
|
+
"choice": "Approve all"
|
|
758
|
+
}
|
|
759
|
+
},
|
|
760
|
+
{
|
|
761
|
+
"id": "B30",
|
|
762
|
+
"group": "B",
|
|
763
|
+
"file": "workspace/pm-tabs-test.js",
|
|
764
|
+
"section": "4 plus session, split, close (fixture)",
|
|
765
|
+
"change": "removed",
|
|
766
|
+
"slice": "3A",
|
|
767
|
+
"lines": [
|
|
768
|
+
301,
|
|
769
|
+
321
|
|
770
|
+
],
|
|
771
|
+
"reason": "Asserts the prototype's tab panel in fixture mode. The tab panel becomes the dock; fixture mode is cut.",
|
|
772
|
+
"replacement": "pm-frame-test.js (3A) for the dock; the live sections of this suite (from line 523) stay.",
|
|
773
|
+
"pm_approval": {
|
|
774
|
+
"by": "wawan",
|
|
775
|
+
"at": "2026-10-05T21:26:13Z",
|
|
776
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
777
|
+
"choice": "Approve all"
|
|
778
|
+
}
|
|
779
|
+
},
|
|
780
|
+
{
|
|
781
|
+
"id": "B31",
|
|
782
|
+
"group": "B",
|
|
783
|
+
"file": "workspace/pm-tabs-test.js",
|
|
784
|
+
"section": "4b options ask before a session starts (fixture)",
|
|
785
|
+
"change": "removed",
|
|
786
|
+
"slice": "3A",
|
|
787
|
+
"lines": [
|
|
788
|
+
322,
|
|
789
|
+
481
|
|
790
|
+
],
|
|
791
|
+
"reason": "Asserts the prototype's tab panel in fixture mode. The tab panel becomes the dock; fixture mode is cut.",
|
|
792
|
+
"replacement": "pm-frame-test.js (3A): plus-session in the dock starts skills; the live \"occupied tree asks first\" cases of this suite (8g) stay.",
|
|
793
|
+
"pm_approval": {
|
|
794
|
+
"by": "wawan",
|
|
795
|
+
"at": "2026-10-05T21:26:13Z",
|
|
796
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
797
|
+
"choice": "Approve all"
|
|
798
|
+
}
|
|
799
|
+
},
|
|
800
|
+
{
|
|
801
|
+
"id": "B32",
|
|
802
|
+
"group": "B",
|
|
803
|
+
"file": "workspace/pm-tabs-test.js",
|
|
804
|
+
"section": "5 per-repository scoping (fixture)",
|
|
805
|
+
"change": "removed",
|
|
806
|
+
"slice": "3A",
|
|
807
|
+
"lines": [
|
|
808
|
+
482,
|
|
809
|
+
496
|
|
810
|
+
],
|
|
811
|
+
"reason": "Asserts the prototype's tab panel in fixture mode. The tab panel becomes the dock; fixture mode is cut.",
|
|
812
|
+
"replacement": "pm-frame-test.js (3A) for the dock; the live sections of this suite (from line 523) stay.",
|
|
813
|
+
"pm_approval": {
|
|
814
|
+
"by": "wawan",
|
|
815
|
+
"at": "2026-10-05T21:26:13Z",
|
|
816
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
817
|
+
"choice": "Approve all"
|
|
818
|
+
}
|
|
819
|
+
},
|
|
820
|
+
{
|
|
821
|
+
"id": "B33",
|
|
822
|
+
"group": "B",
|
|
823
|
+
"file": "workspace/pm-tabs-test.js",
|
|
824
|
+
"section": "6 closing (fixture)",
|
|
825
|
+
"change": "removed",
|
|
826
|
+
"slice": "3A",
|
|
827
|
+
"lines": [
|
|
828
|
+
497,
|
|
829
|
+
512
|
|
830
|
+
],
|
|
831
|
+
"reason": "Asserts the prototype's tab panel in fixture mode. The tab panel becomes the dock; fixture mode is cut.",
|
|
832
|
+
"replacement": "pm-frame-test.js (3A) for the dock; the live sections of this suite (from line 523) stay.",
|
|
833
|
+
"pm_approval": {
|
|
834
|
+
"by": "wawan",
|
|
835
|
+
"at": "2026-10-05T21:26:13Z",
|
|
836
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
837
|
+
"choice": "Approve all"
|
|
838
|
+
}
|
|
839
|
+
},
|
|
840
|
+
{
|
|
841
|
+
"id": "B34",
|
|
842
|
+
"group": "B",
|
|
843
|
+
"file": "workspace/pm-tabs-test.js",
|
|
844
|
+
"section": "7 the scratchpad (fixture)",
|
|
845
|
+
"change": "removed",
|
|
846
|
+
"slice": "3C",
|
|
847
|
+
"lines": [
|
|
848
|
+
513,
|
|
849
|
+
522
|
|
850
|
+
],
|
|
851
|
+
"reason": "The scratchpad survives only as the terminal compose line on the phone (R11).",
|
|
852
|
+
"replacement": "pm-palette-test.js (3C): the capture box is gone; the compose line is asserted in pm-frame-phone-test.js.",
|
|
853
|
+
"pm_approval": {
|
|
854
|
+
"by": "wawan",
|
|
855
|
+
"at": "2026-10-05T21:26:13Z",
|
|
856
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
857
|
+
"choice": "Approve all"
|
|
858
|
+
}
|
|
859
|
+
},
|
|
860
|
+
{
|
|
861
|
+
"id": "B35",
|
|
862
|
+
"group": "B",
|
|
863
|
+
"file": "workspace/pm-term-test.js",
|
|
864
|
+
"section": "fixture mode: the faux shell",
|
|
865
|
+
"change": "removed",
|
|
866
|
+
"slice": "3D",
|
|
867
|
+
"lines": [
|
|
868
|
+
102,
|
|
869
|
+
161
|
|
870
|
+
],
|
|
871
|
+
"reason": "The prototype fixture mode is cut (D86 point 5), so a block that asserts the prototype's DOM has nothing to run on.",
|
|
872
|
+
"replacement": "The live terminal assertions of this suite (RG1 to RG4 equivalents) stay.",
|
|
873
|
+
"pm_approval": {
|
|
874
|
+
"by": "wawan",
|
|
875
|
+
"at": "2026-10-05T21:26:13Z",
|
|
876
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
877
|
+
"choice": "Approve all"
|
|
878
|
+
}
|
|
879
|
+
},
|
|
880
|
+
{
|
|
881
|
+
"id": "B36",
|
|
882
|
+
"group": "B",
|
|
883
|
+
"file": "workspace/pm-term-test.js",
|
|
884
|
+
"section": "the row height, half one: the faux shell against the real terminal",
|
|
885
|
+
"change": "removed",
|
|
886
|
+
"slice": "3D",
|
|
887
|
+
"lines": [
|
|
888
|
+
162,
|
|
889
|
+
251
|
|
890
|
+
],
|
|
891
|
+
"reason": "The prototype fixture mode is cut (D86 point 5), so a block that asserts the prototype's DOM has nothing to run on.",
|
|
892
|
+
"replacement": "The live half of the row-height proof (from line 291) stays; test.js LH1 to LH4 stay.",
|
|
893
|
+
"pm_approval": {
|
|
894
|
+
"by": "wawan",
|
|
895
|
+
"at": "2026-10-05T21:26:13Z",
|
|
896
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
897
|
+
"choice": "Approve all"
|
|
898
|
+
}
|
|
899
|
+
},
|
|
900
|
+
{
|
|
901
|
+
"id": "B37",
|
|
902
|
+
"group": "B",
|
|
903
|
+
"file": "workspace/pm-modes-test.js",
|
|
904
|
+
"section": "1 to 3 every mode is reachable and titled; the visual conventions; the first row opens its detail",
|
|
905
|
+
"change": "removed",
|
|
906
|
+
"slice": "3D",
|
|
907
|
+
"lines": [
|
|
908
|
+
230,
|
|
909
|
+
302
|
|
910
|
+
],
|
|
911
|
+
"reason": "Asserts the seven drawer modes in the prototype layout. R29 cuts the drawer and its modes.",
|
|
912
|
+
"replacement": "pm-frame-test.js absence block (3D) and the Cmd+K scopes of pm-palette-test.js (3C).",
|
|
913
|
+
"pm_approval": {
|
|
914
|
+
"by": "wawan",
|
|
915
|
+
"at": "2026-10-05T21:26:13Z",
|
|
916
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
917
|
+
"choice": "Approve all"
|
|
918
|
+
}
|
|
919
|
+
},
|
|
920
|
+
{
|
|
921
|
+
"id": "B38",
|
|
922
|
+
"group": "B",
|
|
923
|
+
"file": "workspace/pm-modes-test.js",
|
|
924
|
+
"section": "4 the detail bodies are live, not decorative (fixture)",
|
|
925
|
+
"change": "removed",
|
|
926
|
+
"slice": "3D",
|
|
927
|
+
"lines": [
|
|
928
|
+
303,
|
|
929
|
+
370
|
|
930
|
+
],
|
|
931
|
+
"reason": "Asserts the seven drawer modes in the prototype layout. R29 cuts the drawer and its modes.",
|
|
932
|
+
"replacement": "pm-palette-test.js (3C): Knowledge, Memory and Guide are search scopes that read live data.",
|
|
933
|
+
"pm_approval": {
|
|
934
|
+
"by": "wawan",
|
|
935
|
+
"at": "2026-10-05T21:26:13Z",
|
|
936
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
937
|
+
"choice": "Approve all"
|
|
938
|
+
}
|
|
939
|
+
},
|
|
940
|
+
{
|
|
941
|
+
"id": "B39",
|
|
942
|
+
"group": "B",
|
|
943
|
+
"file": "workspace/pm-modes-test.js",
|
|
944
|
+
"section": "5 and 6 a mode opens a tab; entering a mode leaves panels 1 and 4 alone (fixture)",
|
|
945
|
+
"change": "removed",
|
|
946
|
+
"slice": "3D",
|
|
947
|
+
"lines": [
|
|
948
|
+
371,
|
|
949
|
+
401
|
|
950
|
+
],
|
|
951
|
+
"reason": "Asserts the seven drawer modes in the prototype layout. R29 cuts the drawer and its modes.",
|
|
952
|
+
"replacement": "pm-frame-test.js (3A): opening a destination leaves the dock and its terminal alone.",
|
|
953
|
+
"pm_approval": {
|
|
954
|
+
"by": "wawan",
|
|
955
|
+
"at": "2026-10-05T21:26:13Z",
|
|
956
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
957
|
+
"choice": "Approve all"
|
|
958
|
+
}
|
|
959
|
+
},
|
|
960
|
+
{
|
|
961
|
+
"id": "B40",
|
|
962
|
+
"group": "B",
|
|
963
|
+
"file": "workspace/ui-test.js",
|
|
964
|
+
"section": "AC1 four collapsible panels, repo glyph and sub-line, the two-group drawer",
|
|
965
|
+
"change": "replaced",
|
|
966
|
+
"slice": "3D",
|
|
967
|
+
"lines": [
|
|
968
|
+
542,
|
|
969
|
+
714
|
|
970
|
+
],
|
|
971
|
+
"reason": "The handoff brief's acceptance list, run once in fixture mode and once in real mode, asserts the four-panel layout. The fixture run goes; the real run is rewritten for the frame.",
|
|
972
|
+
"replacement": "pm-frame-test.js (3A): the top bar, the data-dest hosts and the dock, asserted as R9 and R10 behaviour",
|
|
973
|
+
"pm_approval": {
|
|
974
|
+
"by": "wawan",
|
|
975
|
+
"at": "2026-10-05T21:26:13Z",
|
|
976
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
977
|
+
"choice": "Approve all"
|
|
978
|
+
}
|
|
979
|
+
},
|
|
980
|
+
{
|
|
981
|
+
"id": "B41",
|
|
982
|
+
"group": "B",
|
|
983
|
+
"file": "workspace/ui-test.js",
|
|
984
|
+
"section": "AC2 panel 2 is a Slack-style O / KR / initiative list",
|
|
985
|
+
"change": "replaced",
|
|
986
|
+
"slice": "3D",
|
|
987
|
+
"lines": [
|
|
988
|
+
715,
|
|
989
|
+
800
|
|
990
|
+
],
|
|
991
|
+
"reason": "The handoff brief's acceptance list, run once in fixture mode and once in real mode, asserts the four-panel layout. The fixture run goes; the real run is rewritten for the frame.",
|
|
992
|
+
"replacement": "Run 2's Initiatives destination suites.",
|
|
993
|
+
"pm_approval": {
|
|
994
|
+
"by": "wawan",
|
|
995
|
+
"at": "2026-10-05T21:26:13Z",
|
|
996
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
997
|
+
"choice": "Approve all"
|
|
998
|
+
}
|
|
999
|
+
},
|
|
1000
|
+
{
|
|
1001
|
+
"id": "B42",
|
|
1002
|
+
"group": "B",
|
|
1003
|
+
"file": "workspace/ui-test.js",
|
|
1004
|
+
"section": "AC3 task phases open a Task tab; no sessions section; no evals row",
|
|
1005
|
+
"change": "replaced",
|
|
1006
|
+
"slice": "3D",
|
|
1007
|
+
"lines": [
|
|
1008
|
+
801,
|
|
1009
|
+
896
|
|
1010
|
+
],
|
|
1011
|
+
"reason": "The handoff brief's acceptance list, run once in fixture mode and once in real mode, asserts the four-panel layout. The fixture run goes; the real run is rewritten for the frame.",
|
|
1012
|
+
"replacement": "pm-frame-test.js absence block (3D): the Task tab is gone.",
|
|
1013
|
+
"pm_approval": {
|
|
1014
|
+
"by": "wawan",
|
|
1015
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1016
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1017
|
+
"choice": "Approve all"
|
|
1018
|
+
}
|
|
1019
|
+
},
|
|
1020
|
+
{
|
|
1021
|
+
"id": "B43",
|
|
1022
|
+
"group": "B",
|
|
1023
|
+
"file": "workspace/ui-test.js",
|
|
1024
|
+
"section": "AC4 artifacts: one-click external link and the repo-is-source sync",
|
|
1025
|
+
"change": "replaced",
|
|
1026
|
+
"slice": "3D",
|
|
1027
|
+
"lines": [
|
|
1028
|
+
897,
|
|
1029
|
+
986
|
|
1030
|
+
],
|
|
1031
|
+
"reason": "The handoff brief's acceptance list, run once in fixture mode and once in real mode, asserts the four-panel layout. The fixture run goes; the real run is rewritten for the frame.",
|
|
1032
|
+
"replacement": "The same assertions through the initiative sheet.",
|
|
1033
|
+
"pm_approval": {
|
|
1034
|
+
"by": "wawan",
|
|
1035
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1036
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1037
|
+
"choice": "Approve all"
|
|
1038
|
+
}
|
|
1039
|
+
},
|
|
1040
|
+
{
|
|
1041
|
+
"id": "B44",
|
|
1042
|
+
"group": "B",
|
|
1043
|
+
"file": "workspace/ui-test.js",
|
|
1044
|
+
"section": "AC5 links are references, kept out of the repo",
|
|
1045
|
+
"change": "replaced",
|
|
1046
|
+
"slice": "3D",
|
|
1047
|
+
"lines": [
|
|
1048
|
+
987,
|
|
1049
|
+
1059
|
|
1050
|
+
],
|
|
1051
|
+
"reason": "The handoff brief's acceptance list, run once in fixture mode and once in real mode, asserts the four-panel layout. The fixture run goes; the real run is rewritten for the frame.",
|
|
1052
|
+
"replacement": "The same assertions through the initiative sheet.",
|
|
1053
|
+
"pm_approval": {
|
|
1054
|
+
"by": "wawan",
|
|
1055
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1056
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1057
|
+
"choice": "Approve all"
|
|
1058
|
+
}
|
|
1059
|
+
},
|
|
1060
|
+
{
|
|
1061
|
+
"id": "B45",
|
|
1062
|
+
"group": "B",
|
|
1063
|
+
"file": "workspace/ui-test.js",
|
|
1064
|
+
"section": "AC6 panel-4 tabs: per repository, two-line, plus session, close, split",
|
|
1065
|
+
"change": "replaced",
|
|
1066
|
+
"slice": "3A",
|
|
1067
|
+
"lines": [
|
|
1068
|
+
1060,
|
|
1069
|
+
1210
|
|
1070
|
+
],
|
|
1071
|
+
"reason": "The handoff brief's acceptance list, run once in fixture mode and once in real mode, asserts the four-panel layout. The fixture run goes; the real run is rewritten for the frame.",
|
|
1072
|
+
"replacement": "pm-frame-test.js (3A): the dock's tabs, plus-session, split and close.",
|
|
1073
|
+
"pm_approval": {
|
|
1074
|
+
"by": "wawan",
|
|
1075
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1076
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1077
|
+
"choice": "Approve all"
|
|
1078
|
+
}
|
|
1079
|
+
},
|
|
1080
|
+
{
|
|
1081
|
+
"id": "B46",
|
|
1082
|
+
"group": "B",
|
|
1083
|
+
"file": "workspace/ui-test.js",
|
|
1084
|
+
"section": "AC7 theming: both themes from tokens, the terminal dark in both, sharp corners",
|
|
1085
|
+
"change": "replaced",
|
|
1086
|
+
"slice": "3D",
|
|
1087
|
+
"lines": [
|
|
1088
|
+
1211,
|
|
1089
|
+
1265
|
|
1090
|
+
],
|
|
1091
|
+
"reason": "The handoff brief's acceptance list, run once in fixture mode and once in real mode, asserts the four-panel layout. The fixture run goes; the real run is rewritten for the frame.",
|
|
1092
|
+
"replacement": "pm-r27-test.js (3D): neutral primary, the chrome follows the theme in both themes, the terminal dark in both, radius 0.",
|
|
1093
|
+
"pm_approval": {
|
|
1094
|
+
"by": "wawan",
|
|
1095
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1096
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1097
|
+
"choice": "Approve all"
|
|
1098
|
+
}
|
|
1099
|
+
},
|
|
1100
|
+
{
|
|
1101
|
+
"id": "B47",
|
|
1102
|
+
"group": "B",
|
|
1103
|
+
"file": "workspace/ui-test.js",
|
|
1104
|
+
"section": "MOB1 to MOB5: the phone chrome, five destinations, the one-panel partition, the terminal survives a tour",
|
|
1105
|
+
"change": "replaced",
|
|
1106
|
+
"slice": "3A",
|
|
1107
|
+
"lines": [
|
|
1108
|
+
1754,
|
|
1109
|
+
1804
|
|
1110
|
+
],
|
|
1111
|
+
"reason": "Asserts the old phone chrome and its destinations. R15 replaces them with the tabs Today, Initiatives, Board, Reports, Agent.",
|
|
1112
|
+
"replacement": "pm-frame-phone-test.js (3A): 390 by 844, touch, one panel at a time; the terminal is never rebuilt by navigating.",
|
|
1113
|
+
"pm_approval": {
|
|
1114
|
+
"by": "wawan",
|
|
1115
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1116
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1117
|
+
"choice": "Approve all"
|
|
1118
|
+
}
|
|
1119
|
+
},
|
|
1120
|
+
{
|
|
1121
|
+
"id": "B48",
|
|
1122
|
+
"group": "B",
|
|
1123
|
+
"file": "workspace/ui-test.js",
|
|
1124
|
+
"section": "MOB7 above the breakpoint the desktop four-panel layout is intact",
|
|
1125
|
+
"change": "replaced",
|
|
1126
|
+
"slice": "3A",
|
|
1127
|
+
"lines": [
|
|
1128
|
+
1858,
|
|
1129
|
+
1858
|
|
1130
|
+
],
|
|
1131
|
+
"reason": "Asserts the four-panel layout above the breakpoint.",
|
|
1132
|
+
"replacement": "pm-frame-test.js (3A): the desktop frame is one top bar with no left sidebar, and the phone chrome is absent.",
|
|
1133
|
+
"pm_approval": {
|
|
1134
|
+
"by": "wawan",
|
|
1135
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1136
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1137
|
+
"choice": "Approve all"
|
|
1138
|
+
}
|
|
1139
|
+
},
|
|
1140
|
+
{
|
|
1141
|
+
"id": "B49",
|
|
1142
|
+
"group": "B",
|
|
1143
|
+
"file": "workspace/pm-r27-test.js",
|
|
1144
|
+
"section": "1 to 4 geometry, the rail, the list, the detail at two window sizes",
|
|
1145
|
+
"change": "replaced",
|
|
1146
|
+
"slice": "3D",
|
|
1147
|
+
"lines": [
|
|
1148
|
+
91,
|
|
1149
|
+
220
|
|
1150
|
+
],
|
|
1151
|
+
"reason": "Measures the rail, the list and the detail column of the four-panel layout.",
|
|
1152
|
+
"replacement": "pm-r27-test.js (3D): the same measures on the frame's top bar, the destination host and the dock (R27 tokens, 16px inputs, 44px targets under pointer:coarse).",
|
|
1153
|
+
"pm_approval": {
|
|
1154
|
+
"by": "wawan",
|
|
1155
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1156
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1157
|
+
"choice": "Approve all"
|
|
1158
|
+
}
|
|
1159
|
+
},
|
|
1160
|
+
{
|
|
1161
|
+
"id": "B50",
|
|
1162
|
+
"group": "B",
|
|
1163
|
+
"file": "workspace/pm-r27-test.js",
|
|
1164
|
+
"section": "5 tools are tabs",
|
|
1165
|
+
"change": "removed",
|
|
1166
|
+
"slice": "3D",
|
|
1167
|
+
"lines": [
|
|
1168
|
+
221,
|
|
1169
|
+
260
|
|
1170
|
+
],
|
|
1171
|
+
"reason": "Asserts that tools open as tabs in the prototype panel. The Task tab and the tool views are cut (R29).",
|
|
1172
|
+
"replacement": "pm-frame-test.js absence block (3D).",
|
|
1173
|
+
"pm_approval": {
|
|
1174
|
+
"by": "wawan",
|
|
1175
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1176
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1177
|
+
"choice": "Approve all"
|
|
1178
|
+
}
|
|
1179
|
+
},
|
|
1180
|
+
{
|
|
1181
|
+
"id": "B51",
|
|
1182
|
+
"group": "B",
|
|
1183
|
+
"file": "workspace/pm-breakdown-test.js",
|
|
1184
|
+
"section": "section 6 guard: fixture mode has no Breakdown entry, no components.css link and no primitives layer",
|
|
1185
|
+
"change": "removed",
|
|
1186
|
+
"slice": "3D",
|
|
1187
|
+
"lines": [
|
|
1188
|
+
79,
|
|
1189
|
+
79
|
|
1190
|
+
],
|
|
1191
|
+
"reason": "Run 1 kept the Breakdown out of the parity lock by asserting the fixture page loads no components.css. Run 3 loads it in every mode and the fixture mode is cut.",
|
|
1192
|
+
"replacement": "None: the guard has nothing to guard. The conformance gate checks the CSS.",
|
|
1193
|
+
"pm_approval": {
|
|
1194
|
+
"by": "wawan",
|
|
1195
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1196
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1197
|
+
"choice": "Approve all"
|
|
1198
|
+
}
|
|
1199
|
+
},
|
|
1200
|
+
{
|
|
1201
|
+
"id": "C01",
|
|
1202
|
+
"group": "C",
|
|
1203
|
+
"file": "workspace/pm-r28-test.js",
|
|
1204
|
+
"section": "the palette, Focus and Today boards",
|
|
1205
|
+
"change": "removed",
|
|
1206
|
+
"slice": "3C",
|
|
1207
|
+
"all": true,
|
|
1208
|
+
"reason": "Palette, Focus and Today transcribed from the mockup. Focus is cut; the palette becomes Cmd+K; Today becomes eight card kinds.",
|
|
1209
|
+
"replacement": "pm-palette-test.js (3C), pm-today-test.js and pm-today-phone-test.js (3B), pm-frame-test.js absence block (Focus).",
|
|
1210
|
+
"pm_approval": {
|
|
1211
|
+
"by": "wawan",
|
|
1212
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1213
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1214
|
+
"choice": "Approve all"
|
|
1215
|
+
}
|
|
1216
|
+
},
|
|
1217
|
+
{
|
|
1218
|
+
"id": "C02",
|
|
1219
|
+
"group": "C",
|
|
1220
|
+
"file": "workspace/pm-r29-today-test.js",
|
|
1221
|
+
"section": "the Today board: needs-you column, header, engine line, intro",
|
|
1222
|
+
"change": "replaced",
|
|
1223
|
+
"slice": "3B",
|
|
1224
|
+
"all": true,
|
|
1225
|
+
"reason": "The Today board of the mockup is replaced by \"N need you\" and ranked cards of the eight kinds.",
|
|
1226
|
+
"replacement": "pm-today-test.js and pm-today-phone-test.js (3B), today.test.js and routes-today.test.js.",
|
|
1227
|
+
"pm_approval": {
|
|
1228
|
+
"by": "wawan",
|
|
1229
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1230
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1231
|
+
"choice": "Approve all"
|
|
1232
|
+
}
|
|
1233
|
+
},
|
|
1234
|
+
{
|
|
1235
|
+
"id": "C03",
|
|
1236
|
+
"group": "C",
|
|
1237
|
+
"file": "workspace/pm-r29-portfolio-test.js",
|
|
1238
|
+
"section": "the Portfolio view",
|
|
1239
|
+
"change": "removed",
|
|
1240
|
+
"slice": "3D",
|
|
1241
|
+
"all": true,
|
|
1242
|
+
"reason": "The Portfolio mode is cut; \"All repositories\" in the Repository menu replaces it (R9, R29).",
|
|
1243
|
+
"replacement": "pm-frame-test.js (3A): the All repositories scope; the absence block (3D). /api/reports keeps its portfolio caller.",
|
|
1244
|
+
"pm_approval": {
|
|
1245
|
+
"by": "wawan",
|
|
1246
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1247
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1248
|
+
"choice": "Approve all"
|
|
1249
|
+
}
|
|
1250
|
+
},
|
|
1251
|
+
{
|
|
1252
|
+
"id": "C04",
|
|
1253
|
+
"group": "C",
|
|
1254
|
+
"file": "workspace/pm-r29-knowledge-test.js",
|
|
1255
|
+
"section": "the Knowledge view",
|
|
1256
|
+
"change": "removed",
|
|
1257
|
+
"slice": "3C",
|
|
1258
|
+
"all": true,
|
|
1259
|
+
"reason": "Knowledge becomes a Cmd+K search scope; the view is cut (R29, R11).",
|
|
1260
|
+
"replacement": "pm-palette-test.js (3C): the Knowledge scope reaches strategy documents and decision records.",
|
|
1261
|
+
"pm_approval": {
|
|
1262
|
+
"by": "wawan",
|
|
1263
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1264
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1265
|
+
"choice": "Approve all"
|
|
1266
|
+
}
|
|
1267
|
+
},
|
|
1268
|
+
{
|
|
1269
|
+
"id": "C05",
|
|
1270
|
+
"group": "C",
|
|
1271
|
+
"file": "workspace/pm-r29-memory-test.js",
|
|
1272
|
+
"section": "the Memory view, live and fixture",
|
|
1273
|
+
"change": "removed",
|
|
1274
|
+
"slice": "3C",
|
|
1275
|
+
"all": true,
|
|
1276
|
+
"reason": "Memory becomes a Cmd+K search scope; the view is cut (R29, R11).",
|
|
1277
|
+
"replacement": "pm-palette-test.js (3C): the Memory scope. The server-side memory assertions in pm-r9-test.js stay.",
|
|
1278
|
+
"pm_approval": {
|
|
1279
|
+
"by": "wawan",
|
|
1280
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1281
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1282
|
+
"choice": "Approve all"
|
|
1283
|
+
}
|
|
1284
|
+
},
|
|
1285
|
+
{
|
|
1286
|
+
"id": "C06",
|
|
1287
|
+
"group": "C",
|
|
1288
|
+
"file": "workspace/pm-r29-skills-scheduled-test.js",
|
|
1289
|
+
"section": "the Skills view and the Scheduled view, live and fixture",
|
|
1290
|
+
"change": "removed",
|
|
1291
|
+
"slice": "3D",
|
|
1292
|
+
"all": true,
|
|
1293
|
+
"reason": "The Skills view is cut. The Scheduled entry is removed only if 5C's Reports schedules strip is merged; otherwise only the Skills half goes and the PR says so.",
|
|
1294
|
+
"replacement": "pm-frame-test.js absence block (3D); 5C's Reports schedules strip suite for Scheduled.",
|
|
1295
|
+
"pm_approval": {
|
|
1296
|
+
"by": "wawan",
|
|
1297
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1298
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1299
|
+
"choice": "Approve all"
|
|
1300
|
+
}
|
|
1301
|
+
},
|
|
1302
|
+
{
|
|
1303
|
+
"id": "C07",
|
|
1304
|
+
"group": "C",
|
|
1305
|
+
"file": "workspace/pm-r29-validate-guide-test.js",
|
|
1306
|
+
"section": "the Validate view and the Guide view",
|
|
1307
|
+
"change": "removed",
|
|
1308
|
+
"slice": "3D",
|
|
1309
|
+
"all": true,
|
|
1310
|
+
"reason": "Validate moves into the gear (consent only) and Guide becomes a Cmd+K scope (R29, R11).",
|
|
1311
|
+
"replacement": "pm-frame-test.js (gear contents), pm-palette-test.js (Guide scope), guide.test.js.",
|
|
1312
|
+
"pm_approval": {
|
|
1313
|
+
"by": "wawan",
|
|
1314
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1315
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1316
|
+
"choice": "Approve all"
|
|
1317
|
+
}
|
|
1318
|
+
},
|
|
1319
|
+
{
|
|
1320
|
+
"id": "C08",
|
|
1321
|
+
"group": "C",
|
|
1322
|
+
"file": "workspace/pm-r29-reports-addrepo-test.js",
|
|
1323
|
+
"section": "reports: the five-card Reports board",
|
|
1324
|
+
"change": "replaced",
|
|
1325
|
+
"slice": "5C",
|
|
1326
|
+
"prefix": "reports:",
|
|
1327
|
+
"reason": "Asserts the mockup's five report cards. 5C changes the Reports board (cards, schedules strip) and the frame hosts it.",
|
|
1328
|
+
"replacement": "5C's reports-page suite and pm-frame-test.js (3A) for the destination host.",
|
|
1329
|
+
"pm_approval": {
|
|
1330
|
+
"by": "wawan",
|
|
1331
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1332
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1333
|
+
"choice": "Approve all"
|
|
1334
|
+
}
|
|
1335
|
+
},
|
|
1336
|
+
{
|
|
1337
|
+
"id": "C09",
|
|
1338
|
+
"group": "C",
|
|
1339
|
+
"file": "workspace/pm-r29-reports-addrepo-test.js",
|
|
1340
|
+
"section": "setup: the cockpit maps both views to their board modules",
|
|
1341
|
+
"change": "removed",
|
|
1342
|
+
"slice": "3D",
|
|
1343
|
+
"names": [
|
|
1344
|
+
"setup: the cockpit maps both views to their board modules"
|
|
1345
|
+
],
|
|
1346
|
+
"reason": "The cockpit view-to-board table is replaced by registry.js mountDestTab.",
|
|
1347
|
+
"replacement": "pm-frame-test.js (3A): every destination mounts through mountDestTab into a host carrying data-dest.",
|
|
1348
|
+
"pm_approval": {
|
|
1349
|
+
"by": "wawan",
|
|
1350
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1351
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1352
|
+
"choice": "Approve all"
|
|
1353
|
+
}
|
|
1354
|
+
},
|
|
1355
|
+
{
|
|
1356
|
+
"id": "C10",
|
|
1357
|
+
"group": "C",
|
|
1358
|
+
"file": "workspace/pm-r29-reports-addrepo-test.js",
|
|
1359
|
+
"section": "addrepo and fixture: the Add repository board",
|
|
1360
|
+
"change": "removed",
|
|
1361
|
+
"slice": "3D",
|
|
1362
|
+
"prefix": "addrepo:",
|
|
1363
|
+
"reason": "The Add repository board is a mockup transcription; adding a repository lives in the gear (R29).",
|
|
1364
|
+
"replacement": "The live add-repository path in pm-repos-test.js (lines 399 to 437), reached through the gear.",
|
|
1365
|
+
"pm_approval": {
|
|
1366
|
+
"by": "wawan",
|
|
1367
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1368
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1369
|
+
"choice": "Approve all"
|
|
1370
|
+
}
|
|
1371
|
+
},
|
|
1372
|
+
{
|
|
1373
|
+
"id": "C11",
|
|
1374
|
+
"group": "C",
|
|
1375
|
+
"file": "workspace/pm-r29-reports-addrepo-test.js",
|
|
1376
|
+
"section": "fixture: the Reports shell and the Add repository board in fixture mode",
|
|
1377
|
+
"change": "removed",
|
|
1378
|
+
"slice": "3D",
|
|
1379
|
+
"prefix": "fixture:",
|
|
1380
|
+
"reason": "The prototype fixture mode is cut (D86 point 5), so a block that asserts the prototype's DOM has nothing to run on.",
|
|
1381
|
+
"replacement": "None.",
|
|
1382
|
+
"pm_approval": {
|
|
1383
|
+
"by": "wawan",
|
|
1384
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1385
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1386
|
+
"choice": "Approve all"
|
|
1387
|
+
}
|
|
1388
|
+
},
|
|
1389
|
+
{
|
|
1390
|
+
"id": "C12",
|
|
1391
|
+
"group": "C",
|
|
1392
|
+
"file": "workspace/pm-r29-filespad-test.js",
|
|
1393
|
+
"section": "the Files view and the scratchpad board",
|
|
1394
|
+
"change": "removed",
|
|
1395
|
+
"slice": "3C",
|
|
1396
|
+
"all": true,
|
|
1397
|
+
"reason": "The scratchpad survives only as the terminal compose line on the phone; the separate capture box is gone (R11).",
|
|
1398
|
+
"replacement": "pm-palette-test.js (3C): Capture as note; capture.test.js and routes-capture.test.js.",
|
|
1399
|
+
"pm_approval": {
|
|
1400
|
+
"by": "wawan",
|
|
1401
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1402
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1403
|
+
"choice": "Approve all"
|
|
1404
|
+
}
|
|
1405
|
+
},
|
|
1406
|
+
{
|
|
1407
|
+
"id": "C13",
|
|
1408
|
+
"group": "C",
|
|
1409
|
+
"file": "workspace/pm-r29-newsession-alignment-test.js",
|
|
1410
|
+
"section": "the new-session chooser card",
|
|
1411
|
+
"change": "replaced",
|
|
1412
|
+
"slice": "3A",
|
|
1413
|
+
"all": true,
|
|
1414
|
+
"reason": "Asserts the chooser card inside the tabs panel at a 640px width. Plus-session starts skills from the dock.",
|
|
1415
|
+
"replacement": "pm-frame-test.js (3A): plus-session in the dock starts skills.",
|
|
1416
|
+
"pm_approval": {
|
|
1417
|
+
"by": "wawan",
|
|
1418
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1419
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1420
|
+
"choice": "Approve all"
|
|
1421
|
+
}
|
|
1422
|
+
},
|
|
1423
|
+
{
|
|
1424
|
+
"id": "D01",
|
|
1425
|
+
"group": "D",
|
|
1426
|
+
"file": "workspace/test.js",
|
|
1427
|
+
"section": "MOBNAV-P1 to P7b: the phone navigation reducer and its tables",
|
|
1428
|
+
"change": "replaced",
|
|
1429
|
+
"slice": "3A",
|
|
1430
|
+
"lines": [
|
|
1431
|
+
2787,
|
|
1432
|
+
2871
|
|
1433
|
+
],
|
|
1434
|
+
"reason": "The reducer maps screens to three columns and modes to old destinations. R15 replaces the destinations with Today, Initiatives, Board, Reports, Agent.",
|
|
1435
|
+
"replacement": "The same properties (every screen maps once, back pops one, every stored view migrates, titles agree) over the new destinations; lib/mobile-nav.js cases.",
|
|
1436
|
+
"pm_approval": {
|
|
1437
|
+
"by": "wawan",
|
|
1438
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1439
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1440
|
+
"choice": "Approve all"
|
|
1441
|
+
}
|
|
1442
|
+
},
|
|
1443
|
+
{
|
|
1444
|
+
"id": "D02",
|
|
1445
|
+
"group": "D",
|
|
1446
|
+
"file": "workspace/test.js",
|
|
1447
|
+
"section": "MOB-2 the 760px breakpoint, MOB-3 the bottom nav, MOB-4b the palette in the top bar, MOB-6 the desktop tracks",
|
|
1448
|
+
"change": "replaced",
|
|
1449
|
+
"slice": "3A",
|
|
1450
|
+
"names": [
|
|
1451
|
+
"MOB-2: a ≤760px breakpoint collapses the multi-panel layout to a single panel",
|
|
1452
|
+
"MOB-3: the bottom nav offers every destination the reducer declares",
|
|
1453
|
+
"MOB-4b: the jump palette is in the always-visible top bar, not the scrolling control bar",
|
|
1454
|
+
"MOB-6: the desktop multi-column layout is preserved unchanged at wide widths (three tracks, list under the repositories)"
|
|
1455
|
+
],
|
|
1456
|
+
"reason": "Each asserts the old phone or desktop layout. MOB-1, MOB-4, MOB-5 and MOB-7 stay: viewport meta, control keys, PTY sequences, refit.",
|
|
1457
|
+
"replacement": "pm-frame-phone-test.js (3A): tabs, Cmd+K pinned at the top of Today; pm-frame-test.js: one top bar, no left sidebar.",
|
|
1458
|
+
"pm_approval": {
|
|
1459
|
+
"by": "wawan",
|
|
1460
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1461
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1462
|
+
"choice": "Approve all"
|
|
1463
|
+
}
|
|
1464
|
+
},
|
|
1465
|
+
{
|
|
1466
|
+
"id": "D03",
|
|
1467
|
+
"group": "D",
|
|
1468
|
+
"file": "workspace/test.js",
|
|
1469
|
+
"section": "LH5 both pane kinds render the same type size; LH6 the faux shell carries the prototype's rule",
|
|
1470
|
+
"change": "removed",
|
|
1471
|
+
"slice": "3D",
|
|
1472
|
+
"names": [
|
|
1473
|
+
"LH5: both pane kinds render the same type size — one terminal, two implementations",
|
|
1474
|
+
"LH6: the faux shell still carries the prototype's rule verbatim"
|
|
1475
|
+
],
|
|
1476
|
+
"reason": "Compares the real terminal with the faux shell of the fixture mode, which is cut. LH1 to LH4 stay.",
|
|
1477
|
+
"replacement": "None: one terminal implementation remains.",
|
|
1478
|
+
"pm_approval": {
|
|
1479
|
+
"by": "wawan",
|
|
1480
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1481
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1482
|
+
"choice": "Approve all"
|
|
1483
|
+
}
|
|
1484
|
+
},
|
|
1485
|
+
{
|
|
1486
|
+
"id": "E01",
|
|
1487
|
+
"group": "E",
|
|
1488
|
+
"file": "workspace/guide.test.js",
|
|
1489
|
+
"section": "G5 every item the live drawer offers is a row in the index table",
|
|
1490
|
+
"change": "replaced",
|
|
1491
|
+
"slice": "3D",
|
|
1492
|
+
"prefix": "G5 ",
|
|
1493
|
+
"reason": "The live drawer is cut (R29).",
|
|
1494
|
+
"replacement": "The index table is checked against the frame's destinations and the gear.",
|
|
1495
|
+
"pm_approval": {
|
|
1496
|
+
"by": "wawan",
|
|
1497
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1498
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1499
|
+
"choice": "Approve all"
|
|
1500
|
+
}
|
|
1501
|
+
},
|
|
1502
|
+
{
|
|
1503
|
+
"id": "E02",
|
|
1504
|
+
"group": "E",
|
|
1505
|
+
"file": "workspace/guide.test.js",
|
|
1506
|
+
"section": "G9 every list mode the live app offers is a navigation row in layout.md",
|
|
1507
|
+
"change": "replaced",
|
|
1508
|
+
"slice": "3D",
|
|
1509
|
+
"prefix": "G9 ",
|
|
1510
|
+
"reason": "The list modes are cut (R29).",
|
|
1511
|
+
"replacement": "layout.md navigation rows for the destinations.",
|
|
1512
|
+
"pm_approval": {
|
|
1513
|
+
"by": "wawan",
|
|
1514
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1515
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1516
|
+
"choice": "Approve all"
|
|
1517
|
+
}
|
|
1518
|
+
},
|
|
1519
|
+
{
|
|
1520
|
+
"id": "E03",
|
|
1521
|
+
"group": "E",
|
|
1522
|
+
"file": "workspace/guide.test.js",
|
|
1523
|
+
"section": "G10 layout.md says three columns and names the rule",
|
|
1524
|
+
"change": "replaced",
|
|
1525
|
+
"slice": "3A",
|
|
1526
|
+
"prefix": "G10 ",
|
|
1527
|
+
"reason": "layout.md describes the frame (one top bar, the dock), not three columns.",
|
|
1528
|
+
"replacement": "The same check against the frame wording of guide/layout.md.",
|
|
1529
|
+
"pm_approval": {
|
|
1530
|
+
"by": "wawan",
|
|
1531
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1532
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1533
|
+
"choice": "Approve all"
|
|
1534
|
+
}
|
|
1535
|
+
},
|
|
1536
|
+
{
|
|
1537
|
+
"id": "E04",
|
|
1538
|
+
"group": "E",
|
|
1539
|
+
"file": "workspace/guide.test.js",
|
|
1540
|
+
"section": "G16 every brief source and the morning-brief skill are named in proactive-engine.md",
|
|
1541
|
+
"change": "replaced",
|
|
1542
|
+
"slice": "3B",
|
|
1543
|
+
"prefix": "G16 ",
|
|
1544
|
+
"reason": "The morning brief is cut (R29).",
|
|
1545
|
+
"replacement": "The eight Today card kinds are named in guide/today.md.",
|
|
1546
|
+
"pm_approval": {
|
|
1547
|
+
"by": "wawan",
|
|
1548
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1549
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1550
|
+
"choice": "Approve all"
|
|
1551
|
+
}
|
|
1552
|
+
},
|
|
1553
|
+
{
|
|
1554
|
+
"id": "E05",
|
|
1555
|
+
"group": "E",
|
|
1556
|
+
"file": "workspace/pm-live-notes-test.js",
|
|
1557
|
+
"section": "the views table has a scoped live-notes view in the menu and opens as a tab",
|
|
1558
|
+
"change": "replaced",
|
|
1559
|
+
"slice": "3D",
|
|
1560
|
+
"lines": [
|
|
1561
|
+
135,
|
|
1562
|
+
139
|
|
1563
|
+
],
|
|
1564
|
+
"reason": "Reaches the live-notes view through the old drawer menu, which is cut: the view is offered in the command palette.",
|
|
1565
|
+
"replacement": "\"1: the views table has a scoped live-notes view offered in the command palette, drawn by its board module\" (palette: true). The rest of the suite reaches the view through the frame.",
|
|
1566
|
+
"pm_approval": {
|
|
1567
|
+
"by": "wawan",
|
|
1568
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1569
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1570
|
+
"choice": "Approve all"
|
|
1571
|
+
}
|
|
1572
|
+
},
|
|
1573
|
+
{
|
|
1574
|
+
"id": "E06",
|
|
1575
|
+
"group": "E",
|
|
1576
|
+
"file": "workspace/pm-seams-test.js",
|
|
1577
|
+
"section": "Today: the nav count, how Today opens, the registered cards, the header equals the badge, the renderers (the five assertions that name Today or its cards; the nav-count assertion at line 140 stays as it is)",
|
|
1578
|
+
"change": "rewritten",
|
|
1579
|
+
"slice": "3A",
|
|
1580
|
+
"reason": "Seams §2.6: 3A may change only how the test reaches Today and the badge through the frame. The assertion text and count (21) stay.",
|
|
1581
|
+
"replacement": "The assertion stays; only the way the suite reaches the surface changes. [data-today-badge] replaces [data-switch=\"today\"].",
|
|
1582
|
+
"pm_approval": {
|
|
1583
|
+
"by": "wawan",
|
|
1584
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1585
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1586
|
+
"choice": "Approve all"
|
|
1587
|
+
},
|
|
1588
|
+
"names": [
|
|
1589
|
+
"Today opens (the Today destination when it is built, else the old cockpit's Today view)",
|
|
1590
|
+
"Today shows the registered cards in the needs-you column, in order",
|
|
1591
|
+
"with Today in All scope, the header's \"N need you\" equals the nav's Today count",
|
|
1592
|
+
"a provider row with no renderer is a Today card drawn from its today payload",
|
|
1593
|
+
"a provider row whose kind has a registered renderer is drawn by that renderer"
|
|
1594
|
+
]
|
|
1595
|
+
},
|
|
1596
|
+
{
|
|
1597
|
+
"id": "E07",
|
|
1598
|
+
"group": "E",
|
|
1599
|
+
"file": "workspace/pm-breakdown-test.js",
|
|
1600
|
+
"section": "needs: Today shows the Breakdown cards (reached through openView today and the morning-brief greeting)",
|
|
1601
|
+
"change": "rewritten",
|
|
1602
|
+
"slice": "3B",
|
|
1603
|
+
"lines": [
|
|
1604
|
+
481,
|
|
1605
|
+
516
|
|
1606
|
+
],
|
|
1607
|
+
"reason": "R21-KEEP: only the navigation to Today changes. The assertions on the cards, the counts and the ledger lines stay.",
|
|
1608
|
+
"replacement": "The assertion stays; only the way the suite reaches the surface changes. pmApp.open(\"today\") replaces openView.",
|
|
1609
|
+
"pm_approval": {
|
|
1610
|
+
"by": "wawan",
|
|
1611
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1612
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1613
|
+
"choice": "Approve all"
|
|
1614
|
+
}
|
|
1615
|
+
},
|
|
1616
|
+
{
|
|
1617
|
+
"id": "E08",
|
|
1618
|
+
"group": "E",
|
|
1619
|
+
"file": "workspace/pm-breakdown-phone-test.js",
|
|
1620
|
+
"section": "toast: after the sheet closes the toast ends above the phone's bottom bar (.mobmenu / .mobnav)",
|
|
1621
|
+
"change": "replaced",
|
|
1622
|
+
"slice": "3A",
|
|
1623
|
+
"lines": [
|
|
1624
|
+
256,
|
|
1625
|
+
256
|
|
1626
|
+
],
|
|
1627
|
+
"reason": "Names the old phone bar.",
|
|
1628
|
+
"replacement": "The same assertion against the frame's phone tab bar.",
|
|
1629
|
+
"pm_approval": {
|
|
1630
|
+
"by": "wawan",
|
|
1631
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1632
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1633
|
+
"choice": "Approve all"
|
|
1634
|
+
}
|
|
1635
|
+
},
|
|
1636
|
+
{
|
|
1637
|
+
"id": "E09",
|
|
1638
|
+
"group": "E",
|
|
1639
|
+
"file": "workspace/first-paint-count.test.js",
|
|
1640
|
+
"section": "(f) every Today breakdown card has 1 title, at most 1 meta line and at most 2 signals",
|
|
1641
|
+
"change": "rewritten",
|
|
1642
|
+
"slice": "3B",
|
|
1643
|
+
"lines": [
|
|
1644
|
+
225,
|
|
1645
|
+
225
|
|
1646
|
+
],
|
|
1647
|
+
"reason": "Reaches the Today cards through the old Today view.",
|
|
1648
|
+
"replacement": "The assertion stays; only the way the suite reaches the surface changes.",
|
|
1649
|
+
"pm_approval": {
|
|
1650
|
+
"by": "wawan",
|
|
1651
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1652
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1653
|
+
"choice": "Approve all"
|
|
1654
|
+
}
|
|
1655
|
+
},
|
|
1656
|
+
{
|
|
1657
|
+
"id": "E10",
|
|
1658
|
+
"group": "E",
|
|
1659
|
+
"file": "workspace/pm-r4-test.js",
|
|
1660
|
+
"section": "A: the portfolio across repositories, the report bar",
|
|
1661
|
+
"change": "replaced",
|
|
1662
|
+
"slice": "3D",
|
|
1663
|
+
"lines": [
|
|
1664
|
+
90,
|
|
1665
|
+
114
|
|
1666
|
+
],
|
|
1667
|
+
"reason": "The Portfolio mode is cut and the report bar moves into Reports.",
|
|
1668
|
+
"replacement": "pm-frame-test.js (All repositories scope); 5C's reports-page suite.",
|
|
1669
|
+
"pm_approval": {
|
|
1670
|
+
"by": "wawan",
|
|
1671
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1672
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1673
|
+
"choice": "Approve all"
|
|
1674
|
+
}
|
|
1675
|
+
},
|
|
1676
|
+
{
|
|
1677
|
+
"id": "E11",
|
|
1678
|
+
"group": "E",
|
|
1679
|
+
"file": "workspace/pm-r4-test.js",
|
|
1680
|
+
"section": "D: scheduled, skills and knowledge lists",
|
|
1681
|
+
"change": "replaced",
|
|
1682
|
+
"slice": "3D",
|
|
1683
|
+
"lines": [
|
|
1684
|
+
134,
|
|
1685
|
+
144
|
|
1686
|
+
],
|
|
1687
|
+
"reason": "The Scheduled, Skills and Knowledge modes are cut.",
|
|
1688
|
+
"replacement": "pm-palette-test.js (3C) scopes; 5C's Reports schedules strip.",
|
|
1689
|
+
"pm_approval": {
|
|
1690
|
+
"by": "wawan",
|
|
1691
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1692
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1693
|
+
"choice": "Approve all"
|
|
1694
|
+
}
|
|
1695
|
+
},
|
|
1696
|
+
{
|
|
1697
|
+
"id": "E12",
|
|
1698
|
+
"group": "E",
|
|
1699
|
+
"file": "workspace/pm-r9-test.js",
|
|
1700
|
+
"section": "M7: the live Memory drawer",
|
|
1701
|
+
"change": "replaced",
|
|
1702
|
+
"slice": "3C",
|
|
1703
|
+
"lines": [
|
|
1704
|
+
110,
|
|
1705
|
+
117
|
|
1706
|
+
],
|
|
1707
|
+
"reason": "Memory becomes a Cmd+K scope; the drawer is cut. The M2 to M8 server assertions stay.",
|
|
1708
|
+
"replacement": "pm-palette-test.js (3C): the Memory scope.",
|
|
1709
|
+
"pm_approval": {
|
|
1710
|
+
"by": "wawan",
|
|
1711
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1712
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1713
|
+
"choice": "Approve all"
|
|
1714
|
+
}
|
|
1715
|
+
},
|
|
1716
|
+
{
|
|
1717
|
+
"id": "E13",
|
|
1718
|
+
"group": "E",
|
|
1719
|
+
"file": "workspace/pm-r13-test.js",
|
|
1720
|
+
"section": "S10 and S5: the Skills drawer lists, opens and approves a candidate",
|
|
1721
|
+
"change": "replaced",
|
|
1722
|
+
"slice": "3D",
|
|
1723
|
+
"lines": [
|
|
1724
|
+
145,
|
|
1725
|
+
155
|
|
1726
|
+
],
|
|
1727
|
+
"reason": "The Skills drawer is cut (R29). The S1 to S12 route assertions stay.",
|
|
1728
|
+
"replacement": "pm-frame-test.js absence block; the approval route stays asserted.",
|
|
1729
|
+
"pm_approval": {
|
|
1730
|
+
"by": "wawan",
|
|
1731
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1732
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1733
|
+
"choice": "Approve all"
|
|
1734
|
+
}
|
|
1735
|
+
},
|
|
1736
|
+
{
|
|
1737
|
+
"id": "E14",
|
|
1738
|
+
"group": "E",
|
|
1739
|
+
"file": "workspace/pm-r15-test.js",
|
|
1740
|
+
"section": "R1 and R2: column resize by drag; the rail abbreviation",
|
|
1741
|
+
"change": "removed",
|
|
1742
|
+
"slice": "3D",
|
|
1743
|
+
"lines": [
|
|
1744
|
+
93,
|
|
1745
|
+
109
|
|
1746
|
+
],
|
|
1747
|
+
"reason": "There are no columns to resize and no rail abbreviation in the frame.",
|
|
1748
|
+
"replacement": "None: the surfaces are cut.",
|
|
1749
|
+
"pm_approval": {
|
|
1750
|
+
"by": "wawan",
|
|
1751
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1752
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1753
|
+
"choice": "Approve all"
|
|
1754
|
+
}
|
|
1755
|
+
},
|
|
1756
|
+
{
|
|
1757
|
+
"id": "E15",
|
|
1758
|
+
"group": "E",
|
|
1759
|
+
"file": "workspace/pm-r15-test.js",
|
|
1760
|
+
"section": "R4 and R5: plus-session beside plus-branch on the repository block; the unbound-session label in its tree row",
|
|
1761
|
+
"change": "replaced",
|
|
1762
|
+
"slice": "3A",
|
|
1763
|
+
"lines": [
|
|
1764
|
+
114,
|
|
1765
|
+
126
|
|
1766
|
+
],
|
|
1767
|
+
"reason": "The repository block is gone.",
|
|
1768
|
+
"replacement": "pm-frame-test.js (3A): plus-session in the dock.",
|
|
1769
|
+
"pm_approval": {
|
|
1770
|
+
"by": "wawan",
|
|
1771
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1772
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1773
|
+
"choice": "Approve all"
|
|
1774
|
+
}
|
|
1775
|
+
},
|
|
1776
|
+
{
|
|
1777
|
+
"id": "E16",
|
|
1778
|
+
"group": "E",
|
|
1779
|
+
"file": "workspace/pm-r15-test.js",
|
|
1780
|
+
"section": "R6: the Memory tab, R7: the portfolio.yaml button, R8: a skill opens a tab",
|
|
1781
|
+
"change": "replaced",
|
|
1782
|
+
"slice": "3C",
|
|
1783
|
+
"lines": [
|
|
1784
|
+
135,
|
|
1785
|
+
154
|
|
1786
|
+
],
|
|
1787
|
+
"reason": "Memory and Skills views are cut; Portfolio mode is cut.",
|
|
1788
|
+
"replacement": "pm-palette-test.js (3C) scopes; All repositories scope.",
|
|
1789
|
+
"pm_approval": {
|
|
1790
|
+
"by": "wawan",
|
|
1791
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1792
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1793
|
+
"choice": "Approve all"
|
|
1794
|
+
}
|
|
1795
|
+
},
|
|
1796
|
+
{
|
|
1797
|
+
"id": "E17",
|
|
1798
|
+
"group": "E",
|
|
1799
|
+
"file": "workspace/pm-r16-test.js",
|
|
1800
|
+
"section": "R2: list grouping control (objective, status, active only)",
|
|
1801
|
+
"change": "removed",
|
|
1802
|
+
"slice": "3D",
|
|
1803
|
+
"lines": [
|
|
1804
|
+
106,
|
|
1805
|
+
130
|
|
1806
|
+
],
|
|
1807
|
+
"reason": "The list and its grouping control are replaced by the Initiatives destination (Run 2).",
|
|
1808
|
+
"replacement": "Run 2's Initiatives destination suites.",
|
|
1809
|
+
"pm_approval": {
|
|
1810
|
+
"by": "wawan",
|
|
1811
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1812
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1813
|
+
"choice": "Approve all"
|
|
1814
|
+
}
|
|
1815
|
+
},
|
|
1816
|
+
{
|
|
1817
|
+
"id": "E18",
|
|
1818
|
+
"group": "E",
|
|
1819
|
+
"file": "workspace/pm-r16-test.js",
|
|
1820
|
+
"section": "R1: ending a session from repository navigation",
|
|
1821
|
+
"change": "replaced",
|
|
1822
|
+
"slice": "3A",
|
|
1823
|
+
"lines": [
|
|
1824
|
+
168,
|
|
1825
|
+
181
|
|
1826
|
+
],
|
|
1827
|
+
"reason": "The repository navigation is replaced by the Repository menu and the dock.",
|
|
1828
|
+
"replacement": "pm-frame-test.js (3A): end a session from the dock.",
|
|
1829
|
+
"pm_approval": {
|
|
1830
|
+
"by": "wawan",
|
|
1831
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1832
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1833
|
+
"choice": "Approve all"
|
|
1834
|
+
}
|
|
1835
|
+
},
|
|
1836
|
+
{
|
|
1837
|
+
"id": "E19",
|
|
1838
|
+
"group": "E",
|
|
1839
|
+
"file": "workspace/pm-r17-test.js",
|
|
1840
|
+
"section": "R18: the audit control on the active repository",
|
|
1841
|
+
"change": "rewritten",
|
|
1842
|
+
"slice": "3A",
|
|
1843
|
+
"lines": [
|
|
1844
|
+
100,
|
|
1845
|
+
106
|
|
1846
|
+
],
|
|
1847
|
+
"reason": "The audit control sits in the repository block, which is gone.",
|
|
1848
|
+
"replacement": "The same audit assertions reached through the frame.",
|
|
1849
|
+
"pm_approval": {
|
|
1850
|
+
"by": "wawan",
|
|
1851
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1852
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1853
|
+
"choice": "Approve all"
|
|
1854
|
+
}
|
|
1855
|
+
},
|
|
1856
|
+
{
|
|
1857
|
+
"id": "E20",
|
|
1858
|
+
"group": "E",
|
|
1859
|
+
"file": "workspace/pm-r17-test.js",
|
|
1860
|
+
"section": "R5, R2, R9: the lane picker and the task pane",
|
|
1861
|
+
"change": "removed",
|
|
1862
|
+
"slice": "3D",
|
|
1863
|
+
"lines": [
|
|
1864
|
+
111,
|
|
1865
|
+
130
|
|
1866
|
+
],
|
|
1867
|
+
"reason": "The lane picker is Run 2's; the task pane is the cut Task tab.",
|
|
1868
|
+
"replacement": "Run 2's Initiatives destination suites; the absence block.",
|
|
1869
|
+
"pm_approval": {
|
|
1870
|
+
"by": "wawan",
|
|
1871
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1872
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1873
|
+
"choice": "Approve all"
|
|
1874
|
+
}
|
|
1875
|
+
},
|
|
1876
|
+
{
|
|
1877
|
+
"id": "E21",
|
|
1878
|
+
"group": "E",
|
|
1879
|
+
"file": "workspace/pm-r18-test.js",
|
|
1880
|
+
"section": "R1: the status legend (\"what do these mean?\")",
|
|
1881
|
+
"change": "removed",
|
|
1882
|
+
"slice": "3D",
|
|
1883
|
+
"lines": [
|
|
1884
|
+
118,
|
|
1885
|
+
130
|
|
1886
|
+
],
|
|
1887
|
+
"reason": "The legend is cut (R29); R3 reads status through initiative-display.",
|
|
1888
|
+
"replacement": "The R3 display rule test of Run 2 over the Initiatives destination.",
|
|
1889
|
+
"pm_approval": {
|
|
1890
|
+
"by": "wawan",
|
|
1891
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1892
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1893
|
+
"choice": "Approve all"
|
|
1894
|
+
}
|
|
1895
|
+
},
|
|
1896
|
+
{
|
|
1897
|
+
"id": "E22",
|
|
1898
|
+
"group": "E",
|
|
1899
|
+
"file": "workspace/pm-r18-test.js",
|
|
1900
|
+
"section": "R4: the banner and the list of what waits on the PM",
|
|
1901
|
+
"change": "removed",
|
|
1902
|
+
"slice": "3B",
|
|
1903
|
+
"names": [
|
|
1904
|
+
"R4: the banner offers the list of what is waiting",
|
|
1905
|
+
"R4: that button opens the list of what waits on the PM"
|
|
1906
|
+
],
|
|
1907
|
+
"reason": "Today replaces the banner and its waiting list.",
|
|
1908
|
+
"replacement": "pm-today-test.js (3B).",
|
|
1909
|
+
"pm_approval": {
|
|
1910
|
+
"by": "wawan",
|
|
1911
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1912
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1913
|
+
"choice": "Approve all"
|
|
1914
|
+
}
|
|
1915
|
+
},
|
|
1916
|
+
{
|
|
1917
|
+
"id": "E23",
|
|
1918
|
+
"group": "E",
|
|
1919
|
+
"file": "workspace/pm-r18-test.js",
|
|
1920
|
+
"section": "R6: the guide drawer item and the guide list",
|
|
1921
|
+
"change": "replaced",
|
|
1922
|
+
"slice": "3C",
|
|
1923
|
+
"lines": [
|
|
1924
|
+
215,
|
|
1925
|
+
221
|
|
1926
|
+
],
|
|
1927
|
+
"reason": "Guide becomes a Cmd+K scope; the drawer is cut.",
|
|
1928
|
+
"replacement": "pm-palette-test.js (3C): the Guide scope.",
|
|
1929
|
+
"pm_approval": {
|
|
1930
|
+
"by": "wawan",
|
|
1931
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1932
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1933
|
+
"choice": "Approve all"
|
|
1934
|
+
}
|
|
1935
|
+
},
|
|
1936
|
+
{
|
|
1937
|
+
"id": "E24",
|
|
1938
|
+
"group": "E",
|
|
1939
|
+
"file": "workspace/pm-r19-test.js",
|
|
1940
|
+
"section": "R1 to R6: three tracks, the list under the repositories, the mode-list table, folding and resizing columns, the stored layout keys",
|
|
1941
|
+
"change": "removed",
|
|
1942
|
+
"slice": "3D",
|
|
1943
|
+
"lines": [
|
|
1944
|
+
96,
|
|
1945
|
+
217
|
|
1946
|
+
],
|
|
1947
|
+
"reason": "Asserts the three-track layout and the mode lists that R9 and R29 remove.",
|
|
1948
|
+
"replacement": "pm-frame-test.js (3A) and the absence block (3D).",
|
|
1949
|
+
"pm_approval": {
|
|
1950
|
+
"by": "wawan",
|
|
1951
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1952
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1953
|
+
"choice": "Approve all"
|
|
1954
|
+
}
|
|
1955
|
+
},
|
|
1956
|
+
{
|
|
1957
|
+
"id": "E25",
|
|
1958
|
+
"group": "E",
|
|
1959
|
+
"file": "workspace/pm-r19-test.js",
|
|
1960
|
+
"section": "R7: on a phone all four hosts stay mounted; portfolio and guide reach a phone destination",
|
|
1961
|
+
"change": "replaced",
|
|
1962
|
+
"slice": "3A",
|
|
1963
|
+
"lines": [
|
|
1964
|
+
244,
|
|
1965
|
+
249
|
|
1966
|
+
],
|
|
1967
|
+
"reason": "Asserts the old phone partition and the portfolio and guide destinations.",
|
|
1968
|
+
"replacement": "pm-frame-phone-test.js (3A).",
|
|
1969
|
+
"pm_approval": {
|
|
1970
|
+
"by": "wawan",
|
|
1971
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1972
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1973
|
+
"choice": "Approve all"
|
|
1974
|
+
}
|
|
1975
|
+
},
|
|
1976
|
+
{
|
|
1977
|
+
"id": "E26",
|
|
1978
|
+
"group": "E",
|
|
1979
|
+
"file": "workspace/pm-r20-test.js",
|
|
1980
|
+
"section": "V1 and V2: the live drawer offers validate; the page opens",
|
|
1981
|
+
"change": "rewritten",
|
|
1982
|
+
"slice": "3D",
|
|
1983
|
+
"lines": [
|
|
1984
|
+
89,
|
|
1985
|
+
92
|
|
1986
|
+
],
|
|
1987
|
+
"reason": "Validate is reached from the gear. The V3 to V22 page assertions stay.",
|
|
1988
|
+
"replacement": "The assertion stays; only the way the suite reaches the surface changes.",
|
|
1989
|
+
"pm_approval": {
|
|
1990
|
+
"by": "wawan",
|
|
1991
|
+
"at": "2026-10-05T21:26:13Z",
|
|
1992
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
1993
|
+
"choice": "Approve all"
|
|
1994
|
+
}
|
|
1995
|
+
},
|
|
1996
|
+
{
|
|
1997
|
+
"id": "E27",
|
|
1998
|
+
"group": "E",
|
|
1999
|
+
"file": "workspace/pm-r22-test.js",
|
|
2000
|
+
"section": "R1 to R13 and B1 to B11: the proactive Today list, feedback, the morning brief",
|
|
2001
|
+
"change": "replaced",
|
|
2002
|
+
"slice": "3B",
|
|
2003
|
+
"lines": [
|
|
2004
|
+
93,
|
|
2005
|
+
272
|
|
2006
|
+
],
|
|
2007
|
+
"reason": "Today becomes the eight-kind card list; the morning brief and the drawer item are cut.",
|
|
2008
|
+
"replacement": "pm-today-test.js, pm-today-phone-test.js, today.test.js and routes-today.test.js (3B).",
|
|
2009
|
+
"pm_approval": {
|
|
2010
|
+
"by": "wawan",
|
|
2011
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2012
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2013
|
+
"choice": "Approve all"
|
|
2014
|
+
}
|
|
2015
|
+
},
|
|
2016
|
+
{
|
|
2017
|
+
"id": "E28",
|
|
2018
|
+
"group": "E",
|
|
2019
|
+
"file": "workspace/pm-r23-test.js",
|
|
2020
|
+
"section": "P1: the Validate page opens",
|
|
2021
|
+
"change": "rewritten",
|
|
2022
|
+
"slice": "3D",
|
|
2023
|
+
"lines": [
|
|
2024
|
+
90,
|
|
2025
|
+
90
|
|
2026
|
+
],
|
|
2027
|
+
"reason": "Reached from the gear.",
|
|
2028
|
+
"replacement": "The assertion stays; only the way the suite reaches the surface changes.",
|
|
2029
|
+
"pm_approval": {
|
|
2030
|
+
"by": "wawan",
|
|
2031
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2032
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2033
|
+
"choice": "Approve all"
|
|
2034
|
+
}
|
|
2035
|
+
},
|
|
2036
|
+
{
|
|
2037
|
+
"id": "E29",
|
|
2038
|
+
"group": "E",
|
|
2039
|
+
"file": "workspace/pm-r24-test.js",
|
|
2040
|
+
"section": "P1: the Validate page explains what is sent",
|
|
2041
|
+
"change": "rewritten",
|
|
2042
|
+
"slice": "3D",
|
|
2043
|
+
"lines": [
|
|
2044
|
+
103,
|
|
2045
|
+
103
|
|
2046
|
+
],
|
|
2047
|
+
"reason": "Reached from the gear.",
|
|
2048
|
+
"replacement": "The assertion stays; only the way the suite reaches the surface changes.",
|
|
2049
|
+
"pm_approval": {
|
|
2050
|
+
"by": "wawan",
|
|
2051
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2052
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2053
|
+
"choice": "Approve all"
|
|
2054
|
+
}
|
|
2055
|
+
},
|
|
2056
|
+
{
|
|
2057
|
+
"id": "E30",
|
|
2058
|
+
"group": "E",
|
|
2059
|
+
"file": "workspace/pm-r25-test.js",
|
|
2060
|
+
"section": "P1 to P13: prepare in the background from a Today item",
|
|
2061
|
+
"change": "replaced",
|
|
2062
|
+
"slice": "3B",
|
|
2063
|
+
"lines": [
|
|
2064
|
+
91,
|
|
2065
|
+
134
|
|
2066
|
+
],
|
|
2067
|
+
"reason": "The Today item is a card of the eight kinds.",
|
|
2068
|
+
"replacement": "pm-today-test.js (3B).",
|
|
2069
|
+
"pm_approval": {
|
|
2070
|
+
"by": "wawan",
|
|
2071
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2072
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2073
|
+
"choice": "Approve all"
|
|
2074
|
+
}
|
|
2075
|
+
},
|
|
2076
|
+
{
|
|
2077
|
+
"id": "E31",
|
|
2078
|
+
"group": "E",
|
|
2079
|
+
"file": "workspace/pm-r26-test.js",
|
|
2080
|
+
"section": "L1 to L18: the learning section of Today, and the reset confirm",
|
|
2081
|
+
"change": "replaced",
|
|
2082
|
+
"slice": "3B",
|
|
2083
|
+
"lines": [
|
|
2084
|
+
99,
|
|
2085
|
+
162
|
|
2086
|
+
],
|
|
2087
|
+
"reason": "Today is rebuilt; the reset confirm is a native dialog (R29).",
|
|
2088
|
+
"replacement": "pm-today-test.js (3B); the reset becomes a sheet.",
|
|
2089
|
+
"pm_approval": {
|
|
2090
|
+
"by": "wawan",
|
|
2091
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2092
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2093
|
+
"choice": "Approve all"
|
|
2094
|
+
}
|
|
2095
|
+
},
|
|
2096
|
+
{
|
|
2097
|
+
"id": "E32",
|
|
2098
|
+
"group": "E",
|
|
2099
|
+
"file": "workspace/pm-doc-category-test.js",
|
|
2100
|
+
"section": "UI: the Knowledge view lists categories and filters",
|
|
2101
|
+
"change": "replaced",
|
|
2102
|
+
"slice": "3C",
|
|
2103
|
+
"prefix": "UI:",
|
|
2104
|
+
"reason": "The Knowledge view becomes a Cmd+K scope.",
|
|
2105
|
+
"replacement": "pm-palette-test.js (3C): the Knowledge scope.",
|
|
2106
|
+
"pm_approval": {
|
|
2107
|
+
"by": "wawan",
|
|
2108
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2109
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2110
|
+
"choice": "Approve all"
|
|
2111
|
+
}
|
|
2112
|
+
},
|
|
2113
|
+
{
|
|
2114
|
+
"id": "E33",
|
|
2115
|
+
"group": "E",
|
|
2116
|
+
"file": "workspace/pm-doc-category-test.js",
|
|
2117
|
+
"section": "C7 UI: the category correction in the Knowledge view",
|
|
2118
|
+
"change": "replaced",
|
|
2119
|
+
"slice": "3C",
|
|
2120
|
+
"prefix": "C7 UI:",
|
|
2121
|
+
"reason": "The Knowledge view becomes a Cmd+K scope.",
|
|
2122
|
+
"replacement": "pm-palette-test.js (3C): the Knowledge scope.",
|
|
2123
|
+
"pm_approval": {
|
|
2124
|
+
"by": "wawan",
|
|
2125
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2126
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2127
|
+
"choice": "Approve all"
|
|
2128
|
+
}
|
|
2129
|
+
},
|
|
2130
|
+
{
|
|
2131
|
+
"id": "E34",
|
|
2132
|
+
"group": "E",
|
|
2133
|
+
"file": "workspace/pm-doc-category-test.js",
|
|
2134
|
+
"section": "reopen and the Jev page (J10 to R6)",
|
|
2135
|
+
"change": "replaced",
|
|
2136
|
+
"slice": "3C",
|
|
2137
|
+
"lines": [
|
|
2138
|
+
174,
|
|
2139
|
+
187
|
|
2140
|
+
],
|
|
2141
|
+
"reason": "The Knowledge view becomes a Cmd+K scope.",
|
|
2142
|
+
"replacement": "pm-palette-test.js (3C): the Knowledge scope.",
|
|
2143
|
+
"pm_approval": {
|
|
2144
|
+
"by": "wawan",
|
|
2145
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2146
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2147
|
+
"choice": "Approve all"
|
|
2148
|
+
}
|
|
2149
|
+
},
|
|
2150
|
+
{
|
|
2151
|
+
"id": "E35",
|
|
2152
|
+
"group": "E",
|
|
2153
|
+
"file": "workspace/pm-r1-test.js",
|
|
2154
|
+
"section": "R4: the repository rail (one tile per repository, no fold toggle, click selects)",
|
|
2155
|
+
"change": "removed",
|
|
2156
|
+
"slice": "3A",
|
|
2157
|
+
"lines": [
|
|
2158
|
+
181,
|
|
2159
|
+
190
|
|
2160
|
+
],
|
|
2161
|
+
"reason": "The 64px rail is replaced by the Repository menu.",
|
|
2162
|
+
"replacement": "pm-frame-test.js (3A).",
|
|
2163
|
+
"pm_approval": {
|
|
2164
|
+
"by": "wawan",
|
|
2165
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2166
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2167
|
+
"choice": "Approve all"
|
|
2168
|
+
}
|
|
2169
|
+
},
|
|
2170
|
+
{
|
|
2171
|
+
"id": "E36",
|
|
2172
|
+
"group": "E",
|
|
2173
|
+
"file": "workspace/pm-r1-test.js",
|
|
2174
|
+
"section": "R6.1 and R6.2: the live drawer modes",
|
|
2175
|
+
"change": "removed",
|
|
2176
|
+
"slice": "3D",
|
|
2177
|
+
"lines": [
|
|
2178
|
+
196,
|
|
2179
|
+
226
|
|
2180
|
+
],
|
|
2181
|
+
"reason": "Asserts the live drawer's entries, which R29 cuts.",
|
|
2182
|
+
"replacement": "pm-frame-test.js absence block (3D).",
|
|
2183
|
+
"pm_approval": {
|
|
2184
|
+
"by": "wawan",
|
|
2185
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2186
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2187
|
+
"choice": "Approve all"
|
|
2188
|
+
}
|
|
2189
|
+
},
|
|
2190
|
+
{
|
|
2191
|
+
"id": "E37",
|
|
2192
|
+
"group": "E",
|
|
2193
|
+
"file": "workspace/pm-r1-test.js",
|
|
2194
|
+
"section": "R3: rename and remove a repository (native prompt and confirm)",
|
|
2195
|
+
"change": "rewritten",
|
|
2196
|
+
"slice": "3D",
|
|
2197
|
+
"lines": [
|
|
2198
|
+
235,
|
|
2199
|
+
257
|
|
2200
|
+
],
|
|
2201
|
+
"reason": "Rename and remove answer native dialogs, which become sheets in the gear (R29). The assertions on what the server did stay.",
|
|
2202
|
+
"replacement": "The assertion stays; only the way the suite reaches the surface changes. The dialog answers become sheet presses.",
|
|
2203
|
+
"pm_approval": {
|
|
2204
|
+
"by": "wawan",
|
|
2205
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2206
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2207
|
+
"choice": "Approve all"
|
|
2208
|
+
}
|
|
2209
|
+
},
|
|
2210
|
+
{
|
|
2211
|
+
"id": "E38",
|
|
2212
|
+
"group": "E",
|
|
2213
|
+
"file": "workspace/pm-r2-test.js",
|
|
2214
|
+
"section": "R2-B3 and R2-B4: the breadcrumb (Domain, Objective, KR) in the detail",
|
|
2215
|
+
"change": "replaced",
|
|
2216
|
+
"slice": "3D",
|
|
2217
|
+
"lines": [
|
|
2218
|
+
97,
|
|
2219
|
+
101
|
|
2220
|
+
],
|
|
2221
|
+
"reason": "The breadcrumb belongs to the prototype detail panel.",
|
|
2222
|
+
"replacement": "The initiative sheet suites of Run 2.",
|
|
2223
|
+
"pm_approval": {
|
|
2224
|
+
"by": "wawan",
|
|
2225
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2226
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2227
|
+
"choice": "Approve all"
|
|
2228
|
+
}
|
|
2229
|
+
},
|
|
2230
|
+
{
|
|
2231
|
+
"id": "E39",
|
|
2232
|
+
"group": "E",
|
|
2233
|
+
"file": "workspace/pm-r3-test.js",
|
|
2234
|
+
"section": "P8: a pm-artifacts initiative shows the PM ladder as its phases and none of the code-shaped phases",
|
|
2235
|
+
"change": "removed",
|
|
2236
|
+
"slice": "3D",
|
|
2237
|
+
"lines": [
|
|
2238
|
+
116,
|
|
2239
|
+
118
|
|
2240
|
+
],
|
|
2241
|
+
"reason": "Synthetic rung tasks and the phases of the Task tab are cut (R29).",
|
|
2242
|
+
"replacement": "The Breakdown tree suites (unchanged) and the absence block.",
|
|
2243
|
+
"pm_approval": {
|
|
2244
|
+
"by": "wawan",
|
|
2245
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2246
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2247
|
+
"choice": "Approve all"
|
|
2248
|
+
}
|
|
2249
|
+
},
|
|
2250
|
+
{
|
|
2251
|
+
"id": "E40",
|
|
2252
|
+
"group": "E",
|
|
2253
|
+
"file": "workspace/pm-r5-test.js",
|
|
2254
|
+
"section": "W1 and W3: typing an address into the web tab prompt",
|
|
2255
|
+
"change": "rewritten",
|
|
2256
|
+
"slice": "3D",
|
|
2257
|
+
"lines": [
|
|
2258
|
+
84,
|
|
2259
|
+
94
|
|
2260
|
+
],
|
|
2261
|
+
"reason": "The web tab takes its address through a native prompt, which becomes a sheet (R29). The Web tab stays in the dock.",
|
|
2262
|
+
"replacement": "The assertion stays; only the way the suite reaches the surface changes. The prompt answer becomes a sheet field.",
|
|
2263
|
+
"pm_approval": {
|
|
2264
|
+
"by": "wawan",
|
|
2265
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2266
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2267
|
+
"choice": "Approve all"
|
|
2268
|
+
}
|
|
2269
|
+
},
|
|
2270
|
+
{
|
|
2271
|
+
"id": "E41",
|
|
2272
|
+
"group": "E",
|
|
2273
|
+
"file": "workspace/pm-r6-test.js",
|
|
2274
|
+
"section": "L5 and L4: the Sync control of the selected repository; close, hold and cancel prompts",
|
|
2275
|
+
"change": "rewritten",
|
|
2276
|
+
"slice": "3A",
|
|
2277
|
+
"lines": [
|
|
2278
|
+
100,
|
|
2279
|
+
106
|
|
2280
|
+
],
|
|
2281
|
+
"reason": "Sync shows only when unsynced, in the top bar; the lifecycle controls answer native prompts.",
|
|
2282
|
+
"replacement": "The assertion stays; only the way the suite reaches the surface changes.",
|
|
2283
|
+
"pm_approval": {
|
|
2284
|
+
"by": "wawan",
|
|
2285
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2286
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2287
|
+
"choice": "Approve all"
|
|
2288
|
+
}
|
|
2289
|
+
},
|
|
2290
|
+
{
|
|
2291
|
+
"id": "E42",
|
|
2292
|
+
"group": "E",
|
|
2293
|
+
"file": "workspace/pm-r14-test.js",
|
|
2294
|
+
"section": "R5, R6, R2: worktrees listed in panel 1 with their sessions",
|
|
2295
|
+
"change": "replaced",
|
|
2296
|
+
"slice": "3A",
|
|
2297
|
+
"lines": [
|
|
2298
|
+
94,
|
|
2299
|
+
104
|
|
2300
|
+
],
|
|
2301
|
+
"reason": "The repository block in panel 1 is gone.",
|
|
2302
|
+
"replacement": "pm-frame-test.js (3A) and the dock.",
|
|
2303
|
+
"pm_approval": {
|
|
2304
|
+
"by": "wawan",
|
|
2305
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2306
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2307
|
+
"choice": "Approve all"
|
|
2308
|
+
}
|
|
2309
|
+
},
|
|
2310
|
+
{
|
|
2311
|
+
"id": "E43",
|
|
2312
|
+
"group": "E",
|
|
2313
|
+
"file": "workspace/pm-r14-test.js",
|
|
2314
|
+
"section": "R3, R4: end a session and remove a folder from panel 1",
|
|
2315
|
+
"change": "rewritten",
|
|
2316
|
+
"slice": "3A",
|
|
2317
|
+
"lines": [
|
|
2318
|
+
134,
|
|
2319
|
+
139
|
|
2320
|
+
],
|
|
2321
|
+
"reason": "The repository block in panel 1 is gone; the confirming second press may become a sheet.",
|
|
2322
|
+
"replacement": "The assertion stays; only the way the suite reaches the surface changes.",
|
|
2323
|
+
"pm_approval": {
|
|
2324
|
+
"by": "wawan",
|
|
2325
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2326
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2327
|
+
"choice": "Approve all"
|
|
2328
|
+
}
|
|
2329
|
+
},
|
|
2330
|
+
{
|
|
2331
|
+
"id": "E44",
|
|
2332
|
+
"group": "E",
|
|
2333
|
+
"file": ".github/scripts/offline-workspace-smoke.js",
|
|
2334
|
+
"section": "the four panels render; hosts in order; the list names the repository; the tabs host offers a session",
|
|
2335
|
+
"change": "replaced",
|
|
2336
|
+
"slice": "3D",
|
|
2337
|
+
"lines": [
|
|
2338
|
+
153,
|
|
2339
|
+
170
|
|
2340
|
+
],
|
|
2341
|
+
"reason": "Asserts the four cockpit hosts and the plus-session text of the tabs host.",
|
|
2342
|
+
"replacement": "The same smoke over the frame's hosts: the top bar, a data-dest host, the dock.",
|
|
2343
|
+
"pm_approval": {
|
|
2344
|
+
"by": "wawan",
|
|
2345
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2346
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2347
|
+
"choice": "Approve all"
|
|
2348
|
+
}
|
|
2349
|
+
},
|
|
2350
|
+
{
|
|
2351
|
+
"id": "E45",
|
|
2352
|
+
"group": "E",
|
|
2353
|
+
"file": "workspace/pm-r30-test.js",
|
|
2354
|
+
"section": "H1 to B1: the tab strip with many tabs, the list switch and its reload (lines 115 to 177)",
|
|
2355
|
+
"change": "replaced",
|
|
2356
|
+
"slice": "3A",
|
|
2357
|
+
"lines": [
|
|
2358
|
+
115,
|
|
2359
|
+
177
|
|
2360
|
+
],
|
|
2361
|
+
"reason": "The suite waits for #pm-rail (the left sidebar R10 removes) and fills the strip to 8 or more tabs by opening the cut views portfolio, knowledge, memory, skills, scheduled, validate and guide through openView (R29). Both the rail and those views go. The assertions on the strip (one 45px row, 96px minimum, scroll into view, the list switch, the reload) are about the tab strip, which the dock keeps.",
|
|
2362
|
+
"replacement": "pm-frame-test.js (3A): the dock's tabs, crowded by plus-session, keep the one-row strip and the list switch; the setup (lines 69 and 87) and the page-error check stay.",
|
|
2363
|
+
"pm_approval": {
|
|
2364
|
+
"by": "wawan",
|
|
2365
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2366
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2367
|
+
"choice": "Approve all"
|
|
2368
|
+
}
|
|
2369
|
+
},
|
|
2370
|
+
{
|
|
2371
|
+
"id": "E46",
|
|
2372
|
+
"group": "E",
|
|
2373
|
+
"file": "workspace/pm-breakdown-test.js",
|
|
2374
|
+
"section": "offline: the icon sprite holds 17 symbols",
|
|
2375
|
+
"change": "replaced",
|
|
2376
|
+
"slice": "3D",
|
|
2377
|
+
"names": [
|
|
2378
|
+
"offline: the icon sprite holds 17 symbols"
|
|
2379
|
+
],
|
|
2380
|
+
"reason": "The shell now draws eight more Lucide icons in place of Unicode glyph controls (R27), so the committed sprite holds 25 symbols.",
|
|
2381
|
+
"replacement": "The same check, named for the new count: the icon sprite holds 25 symbols.",
|
|
2382
|
+
"pm_approval": {
|
|
2383
|
+
"by": "wawan",
|
|
2384
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2385
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2386
|
+
"choice": "Approve all"
|
|
2387
|
+
}
|
|
2388
|
+
},
|
|
2389
|
+
{
|
|
2390
|
+
"id": "E47",
|
|
2391
|
+
"group": "E",
|
|
2392
|
+
"file": "workspace/fixture-parity.test.mjs",
|
|
2393
|
+
"section": "synthTasks against the prototype implementation (lines 133 to 135)",
|
|
2394
|
+
"change": "retired",
|
|
2395
|
+
"slice": "3D",
|
|
2396
|
+
"lines": [
|
|
2397
|
+
133,
|
|
2398
|
+
135
|
|
2399
|
+
],
|
|
2400
|
+
"reason": "synthTasks builds the synthetic rung tasks the Task tab drew for a stage with no authored tasks. The Task tab and the synthetic rung tasks are cut (R29); the function is deleted from fixture.js.",
|
|
2401
|
+
"replacement": "None: the synthetic rung tasks are cut. pm-frame-test.js (3D absence block) asserts the Task tab is gone.",
|
|
2402
|
+
"pm_approval": {
|
|
2403
|
+
"by": "wawan",
|
|
2404
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2405
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2406
|
+
"choice": "Approve all"
|
|
2407
|
+
}
|
|
2408
|
+
},
|
|
2409
|
+
{
|
|
2410
|
+
"id": "E48",
|
|
2411
|
+
"group": "E",
|
|
2412
|
+
"file": "workspace/fixture-parity.test.mjs",
|
|
2413
|
+
"section": "phases derivation: labels, status, count, authored tasks, authored status, authored count, no-record (lines 140 to 147)",
|
|
2414
|
+
"change": "retired",
|
|
2415
|
+
"slice": "3D",
|
|
2416
|
+
"lines": [
|
|
2417
|
+
140,
|
|
2418
|
+
147
|
|
2419
|
+
],
|
|
2420
|
+
"reason": "phasesFor derived the rung rows of the Task tab (R29 cut). The function is deleted from fixture.js with the tab.",
|
|
2421
|
+
"replacement": "None for the rung rows. The ladder the old shells still draw is asserted by pm-detail-test.js and pm-initiatives-test.js.",
|
|
2422
|
+
"pm_approval": {
|
|
2423
|
+
"by": "wawan",
|
|
2424
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2425
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2426
|
+
"choice": "Approve all"
|
|
2427
|
+
}
|
|
2428
|
+
},
|
|
2429
|
+
{
|
|
2430
|
+
"id": "E49",
|
|
2431
|
+
"group": "E",
|
|
2432
|
+
"file": "workspace/guide.test.js",
|
|
2433
|
+
"section": "GC2 the page says how to correct a category, where a correction is kept, and that the write-back shows the change first",
|
|
2434
|
+
"change": "retired",
|
|
2435
|
+
"slice": "3D",
|
|
2436
|
+
"prefix": "GC2 ",
|
|
2437
|
+
"reason": "The correction and the write-back were controls of the Knowledge view, which R29 cuts. guide/knowledge-graph.md no longer describes controls that no screen offers.",
|
|
2438
|
+
"replacement": "None for the controls. pm-palette-test.js (3C) asserts the Knowledge scope; the server routes of the correction keep their route suites.",
|
|
2439
|
+
"pm_approval": {
|
|
2440
|
+
"by": "wawan",
|
|
2441
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2442
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2443
|
+
"choice": "Approve all"
|
|
2444
|
+
}
|
|
2445
|
+
},
|
|
2446
|
+
{
|
|
2447
|
+
"id": "E50",
|
|
2448
|
+
"group": "E",
|
|
2449
|
+
"file": "workspace/guide.test.js",
|
|
2450
|
+
"section": "GC3 the page says Jev is off until turned on, names the three gates, the confirmed first send, the snippet limit and that it is advisory",
|
|
2451
|
+
"change": "retired",
|
|
2452
|
+
"slice": "3D",
|
|
2453
|
+
"prefix": "GC3 ",
|
|
2454
|
+
"reason": "The Jev switch, the count and the confirm were controls of the Knowledge view, which R29 cuts. The page keeps the measured pass, which runs from a terminal.",
|
|
2455
|
+
"replacement": "None for the view's controls. The measured pass keeps its own test, pm-doc-category-test.js and doc-category-bench.",
|
|
2456
|
+
"pm_approval": {
|
|
2457
|
+
"by": "wawan",
|
|
2458
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2459
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2460
|
+
"choice": "Approve all"
|
|
2461
|
+
}
|
|
2462
|
+
},
|
|
2463
|
+
{
|
|
2464
|
+
"id": "E51",
|
|
2465
|
+
"group": "E",
|
|
2466
|
+
"file": "workspace/pm-modes-test.js",
|
|
2467
|
+
"section": "real mode: the drawer does not offer agents or connections; each cut mode still renders and leaks no fixture row; connections refuses to invent a connector; an empty memory list states the empty read",
|
|
2468
|
+
"change": "retired",
|
|
2469
|
+
"slice": "3D",
|
|
2470
|
+
"lines": [
|
|
2471
|
+
402,
|
|
2472
|
+
449
|
|
2473
|
+
],
|
|
2474
|
+
"reason": "Every assertion is about one of the seven drawer modes (Agents, Memory, Knowledge, Focus, Skills, Connect, Scheduled), which R29 cuts together with the settings drawer. The fixture half of the same suite is B37 to B39.",
|
|
2475
|
+
"replacement": "pm-modes-test.js now asserts what is left: the lists are Initiatives and Validate, none of the seven is a mode, and the older layout has no drawer. cuts.test.js asserts the cut code is gone.",
|
|
2476
|
+
"pm_approval": {
|
|
2477
|
+
"by": "wawan",
|
|
2478
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2479
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2480
|
+
"choice": "Approve all"
|
|
2481
|
+
}
|
|
2482
|
+
},
|
|
2483
|
+
{
|
|
2484
|
+
"id": "E52",
|
|
2485
|
+
"group": "E",
|
|
2486
|
+
"file": "workspace/pm-shell-test.js",
|
|
2487
|
+
"section": "theme: the shell starts dark and says so",
|
|
2488
|
+
"change": "rewritten",
|
|
2489
|
+
"slice": "3D",
|
|
2490
|
+
"names": [
|
|
2491
|
+
"the shell starts dark and says so"
|
|
2492
|
+
],
|
|
2493
|
+
"reason": "The rail's menu held the theme control and is cut with the settings drawer (R29). The suite reads the starting theme from data-pm-theme alone; it no longer reads the menu entry's label.",
|
|
2494
|
+
"replacement": "The assertion stays; only the label half of its condition goes with the menu. The frame's Settings has the theme control (pm-frame-test.js).",
|
|
2495
|
+
"pm_approval": {
|
|
2496
|
+
"by": "wawan",
|
|
2497
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2498
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2499
|
+
"choice": "Approve all"
|
|
2500
|
+
}
|
|
2501
|
+
},
|
|
2502
|
+
{
|
|
2503
|
+
"id": "E53",
|
|
2504
|
+
"group": "E",
|
|
2505
|
+
"file": "workspace/pm-shell-test.js",
|
|
2506
|
+
"section": "theme: the menu entry flips data-pm-theme and its own label",
|
|
2507
|
+
"change": "replaced",
|
|
2508
|
+
"slice": "3D",
|
|
2509
|
+
"names": [
|
|
2510
|
+
"the menu entry flips data-pm-theme and its own label"
|
|
2511
|
+
],
|
|
2512
|
+
"reason": "The menu entry is cut with the rail's menu (R29).",
|
|
2513
|
+
"replacement": "setting the theme to light flips data-pm-theme (pm-shell-test.js); the Settings theme control flips it in the frame (pm-frame-test.js).",
|
|
2514
|
+
"pm_approval": {
|
|
2515
|
+
"by": "wawan",
|
|
2516
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2517
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2518
|
+
"choice": "Approve all"
|
|
2519
|
+
}
|
|
2520
|
+
},
|
|
2521
|
+
{
|
|
2522
|
+
"id": "E54",
|
|
2523
|
+
"group": "E",
|
|
2524
|
+
"file": "workspace/pm-initiatives-test.js",
|
|
2525
|
+
"section": "the active row is a --accent wash with a 2px --brand left border",
|
|
2526
|
+
"change": "replaced",
|
|
2527
|
+
"slice": "3D",
|
|
2528
|
+
"names": [
|
|
2529
|
+
"the active row is a --accent wash with a 2px --brand left border"
|
|
2530
|
+
],
|
|
2531
|
+
"reason": "R27: the brand colour marks the Today dot and count only. An active row keeps its 2px left border and its wash, and the border is the text colour.",
|
|
2532
|
+
"replacement": "the active row is a --accent wash with a 2px left border in the text colour (same suite, same position).",
|
|
2533
|
+
"pm_approval": {
|
|
2534
|
+
"by": "wawan",
|
|
2535
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2536
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2537
|
+
"choice": "Approve all"
|
|
2538
|
+
}
|
|
2539
|
+
},
|
|
2540
|
+
{
|
|
2541
|
+
"id": "E55",
|
|
2542
|
+
"group": "E",
|
|
2543
|
+
"file": "workspace/pm-shell-test.js",
|
|
2544
|
+
"section": "a poisoned stored record: invalid values fall back to their defaults",
|
|
2545
|
+
"change": "rewritten",
|
|
2546
|
+
"slice": "3D",
|
|
2547
|
+
"names": [
|
|
2548
|
+
"invalid values fall back to their defaults"
|
|
2549
|
+
],
|
|
2550
|
+
"reason": "The settings drawer is cut, so the arrangement has no settingsOpen key. A stored settingsOpen is an unknown key: it is dropped, and the state has no such key.",
|
|
2551
|
+
"replacement": "The assertion stays; its settingsOpen condition reads undefined instead of false.",
|
|
2552
|
+
"pm_approval": {
|
|
2553
|
+
"by": "wawan",
|
|
2554
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2555
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2556
|
+
"choice": "Approve all"
|
|
2557
|
+
}
|
|
2558
|
+
},
|
|
2559
|
+
{
|
|
2560
|
+
"id": "E56",
|
|
2561
|
+
"group": "E",
|
|
2562
|
+
"file": "workspace/pm-tabs-test.js",
|
|
2563
|
+
"section": "the three tab kinds are told apart by dot colour",
|
|
2564
|
+
"change": "replaced",
|
|
2565
|
+
"slice": "3D",
|
|
2566
|
+
"names": [
|
|
2567
|
+
"the three tab kinds are told apart by dot colour"
|
|
2568
|
+
],
|
|
2569
|
+
"reason": "The Task tab is cut (R29), so there are two tab kinds with a dot of their own (a document, a terminal), and the Task tab's purple is gone.",
|
|
2570
|
+
"replacement": "the tab kinds are told apart by dot colour: a document is blue, a terminal is green, and the Task purple is absent (same suite, same position).",
|
|
2571
|
+
"pm_approval": {
|
|
2572
|
+
"by": "wawan",
|
|
2573
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2574
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2575
|
+
"choice": "Approve all"
|
|
2576
|
+
}
|
|
2577
|
+
},
|
|
2578
|
+
{
|
|
2579
|
+
"id": "E57",
|
|
2580
|
+
"group": "E",
|
|
2581
|
+
"file": "workspace/pm-tabs-test.js",
|
|
2582
|
+
"section": "real mode: panel 4 comes up with its session control",
|
|
2583
|
+
"change": "rewritten",
|
|
2584
|
+
"slice": "3D",
|
|
2585
|
+
"names": [
|
|
2586
|
+
"panel 4 comes up in real mode too"
|
|
2587
|
+
],
|
|
2588
|
+
"reason": "The dock (3A) names its control Session, with an icon, in place of the text + session of the old panel 4.",
|
|
2589
|
+
"replacement": "The assertion stays; it reads the control by the word session and no longer by the plus sign.",
|
|
2590
|
+
"pm_approval": {
|
|
2591
|
+
"by": "wawan",
|
|
2592
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2593
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2594
|
+
"choice": "Approve all"
|
|
2595
|
+
}
|
|
2596
|
+
},
|
|
2597
|
+
{
|
|
2598
|
+
"id": "E58",
|
|
2599
|
+
"group": "E",
|
|
2600
|
+
"file": "workspace/pm-detail-test.js",
|
|
2601
|
+
"section": "real mode: its phases are derived from the real steps",
|
|
2602
|
+
"change": "rewritten",
|
|
2603
|
+
"slice": "3D",
|
|
2604
|
+
"names": [
|
|
2605
|
+
"its phases are derived from the real steps"
|
|
2606
|
+
],
|
|
2607
|
+
"reason": "The synthetic rung tasks are cut (R29), so the detail draws no phase list and no task count. The phases the old assertion read from the real steps were those rung phases.",
|
|
2608
|
+
"replacement": "The name stays; the body now asserts the phase list and counts are gone and the detail names the Breakdown, which holds the work.",
|
|
2609
|
+
"pm_approval": {
|
|
2610
|
+
"by": "wawan",
|
|
2611
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2612
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2613
|
+
"choice": "Approve all"
|
|
2614
|
+
}
|
|
2615
|
+
},
|
|
2616
|
+
{
|
|
2617
|
+
"id": "E59",
|
|
2618
|
+
"group": "E",
|
|
2619
|
+
"file": "workspace/pm-r18-test.js",
|
|
2620
|
+
"section": "R2: the status banner's group word, per status (delivered, returned, held)",
|
|
2621
|
+
"change": "replaced",
|
|
2622
|
+
"slice": "3D",
|
|
2623
|
+
"names": [
|
|
2624
|
+
"R2: a delivered initiative says Awaiting acceptance",
|
|
2625
|
+
"R2: a returned initiative says Needs you",
|
|
2626
|
+
"R2: a held initiative says On hold and that it is the PM’s to reopen"
|
|
2627
|
+
],
|
|
2628
|
+
"reason": "The cockpit and the status banner read displayOf (R3, C12): the banner's word is the one every surface shows, no longer the engine group's own label. The group key and the evidence lines below it are unchanged.",
|
|
2629
|
+
"replacement": "The same three cases assert the group key and that the banner shows the word displayOf gives for the same record (alpha, delta, beta).",
|
|
2630
|
+
"pm_approval": {
|
|
2631
|
+
"by": "wawan",
|
|
2632
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2633
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2634
|
+
"choice": "Approve all"
|
|
2635
|
+
}
|
|
2636
|
+
},
|
|
2637
|
+
{
|
|
2638
|
+
"id": "E60",
|
|
2639
|
+
"group": "E",
|
|
2640
|
+
"file": "workspace/pm-r27-test.js",
|
|
2641
|
+
"section": "setup: three repositories are registered (the old suite's rail needed twenty-three)",
|
|
2642
|
+
"change": "replaced",
|
|
2643
|
+
"slice": "3D",
|
|
2644
|
+
"names": [
|
|
2645
|
+
"setup: three repositories are registered"
|
|
2646
|
+
],
|
|
2647
|
+
"reason": "The 64px repository rail and its scrolling test repositories are gone with the cockpit layout.",
|
|
2648
|
+
"replacement": "pm-r27-test.js boots one fixture repository through bootWithRepo; the Repository menu is pm-frame-test.js.",
|
|
2649
|
+
"pm_approval": {
|
|
2650
|
+
"by": "wawan",
|
|
2651
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2652
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2653
|
+
"choice": "Approve all"
|
|
2654
|
+
}
|
|
2655
|
+
},
|
|
2656
|
+
{
|
|
2657
|
+
"id": "E61",
|
|
2658
|
+
"group": "E",
|
|
2659
|
+
"file": "workspace/pm-r27-test.js",
|
|
2660
|
+
"section": "5 · every list mode and view tab: the views table, one view tab per view, the switch, the menu with its three groups",
|
|
2661
|
+
"change": "removed",
|
|
2662
|
+
"slice": "3D",
|
|
2663
|
+
"lines": [
|
|
2664
|
+
231,
|
|
2665
|
+
257
|
|
2666
|
+
],
|
|
2667
|
+
"reason": "The Knowledge, Memory, Skills, Scheduled and Portfolio views, the list switch and the menu of tools are cut (R29).",
|
|
2668
|
+
"replacement": "cuts.test.js asserts each is absent; pm-frame-test.js covers the places the frame offers.",
|
|
2669
|
+
"pm_approval": {
|
|
2670
|
+
"by": "wawan",
|
|
2671
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2672
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2673
|
+
"choice": "Approve all"
|
|
2674
|
+
}
|
|
2675
|
+
},
|
|
2676
|
+
{
|
|
2677
|
+
"id": "E62",
|
|
2678
|
+
"group": "E",
|
|
2679
|
+
"file": "workspace/pm-r27-test.js",
|
|
2680
|
+
"section": "6 · persistence: view tabs, the previous version's layout, unknown keys, a corrupt value",
|
|
2681
|
+
"change": "replaced",
|
|
2682
|
+
"slice": "3D",
|
|
2683
|
+
"lines": [
|
|
2684
|
+
268,
|
|
2685
|
+
287
|
|
2686
|
+
],
|
|
2687
|
+
"reason": "The checks named the cut views (Knowledge, Memory, Guide) and the rail's id.",
|
|
2688
|
+
"replacement": "The same four checks under the names 'layout: …' in pm-r27-test.js, on the frame with the Validate view tab.",
|
|
2689
|
+
"pm_approval": {
|
|
2690
|
+
"by": "wawan",
|
|
2691
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2692
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2693
|
+
"choice": "Approve all"
|
|
2694
|
+
}
|
|
2695
|
+
},
|
|
2696
|
+
{
|
|
2697
|
+
"id": "E63",
|
|
2698
|
+
"group": "E",
|
|
2699
|
+
"file": "workspace/pm-r27-test.js",
|
|
2700
|
+
"section": "7 · a terminal survives every layout change",
|
|
2701
|
+
"change": "replaced",
|
|
2702
|
+
"slice": "3D",
|
|
2703
|
+
"lines": [
|
|
2704
|
+
296,
|
|
2705
|
+
327
|
|
2706
|
+
],
|
|
2707
|
+
"reason": "The checks switched repository by the rail tile and opened five cut view tabs.",
|
|
2708
|
+
"replacement": "The terminal checks under the names 'frame: … the terminal keeps its DOM node and its server session' in pm-r27-test.js, across the destinations, a resize and a view tab.",
|
|
2709
|
+
"pm_approval": {
|
|
2710
|
+
"by": "wawan",
|
|
2711
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2712
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2713
|
+
"choice": "Approve all"
|
|
2714
|
+
}
|
|
2715
|
+
},
|
|
2716
|
+
{
|
|
2717
|
+
"id": "E64",
|
|
2718
|
+
"group": "E",
|
|
2719
|
+
"file": "workspace/pm-r15-test.js",
|
|
2720
|
+
"section": "R9: Run states its outcome (the Scheduled view's Run button)",
|
|
2721
|
+
"change": "removed",
|
|
2722
|
+
"slice": "3D",
|
|
2723
|
+
"lines": [
|
|
2724
|
+
156,
|
|
2725
|
+
165
|
|
2726
|
+
],
|
|
2727
|
+
"reason": "The Scheduled view is cut (R29); its Run button goes with it.",
|
|
2728
|
+
"replacement": "The Run button has no successor: the Scheduled entry is cut. 5C's Reports page keeps the schedule strip with Pause and Resume (pm-reports-test.js).",
|
|
2729
|
+
"pm_approval": {
|
|
2730
|
+
"by": "wawan",
|
|
2731
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2732
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2733
|
+
"choice": "Approve all"
|
|
2734
|
+
}
|
|
2735
|
+
},
|
|
2736
|
+
{
|
|
2737
|
+
"id": "E65",
|
|
2738
|
+
"group": "E",
|
|
2739
|
+
"file": "workspace/pm-doc-category-test.js",
|
|
2740
|
+
"section": "reopen and the Jev switch page: the page's own words (J2, J6, J7, J8)",
|
|
2741
|
+
"change": "removed",
|
|
2742
|
+
"slice": "3D",
|
|
2743
|
+
"names": [
|
|
2744
|
+
"reopen: the scratch repository stays selected after a reload",
|
|
2745
|
+
"J2 the page says it is not active and why, and the ask press is disabled",
|
|
2746
|
+
"J6 with all three gates the page says nothing is sent before the first run is confirmed",
|
|
2747
|
+
"J7 the ask press shows a count, a size and the host before anything is sent",
|
|
2748
|
+
"J8 a confirm press appears with that count, and nothing has been sent"
|
|
2749
|
+
],
|
|
2750
|
+
"reason": "They read the Knowledge view's Jev switch, gate line and ask press. The Knowledge view is cut (R29).",
|
|
2751
|
+
"replacement": "J1, J3, J4, J5, J9 and J9b assert the same gates and plan through the routes; the words the PM read have no surface until Jev has one.",
|
|
2752
|
+
"pm_approval": {
|
|
2753
|
+
"by": "wawan",
|
|
2754
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2755
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2756
|
+
"choice": "Approve all"
|
|
2757
|
+
}
|
|
2758
|
+
},
|
|
2759
|
+
{
|
|
2760
|
+
"id": "E66",
|
|
2761
|
+
"group": "E",
|
|
2762
|
+
"file": "workspace/pm-doc-category-test.js",
|
|
2763
|
+
"section": "J4 turning the switch on (it pressed the page's switch)",
|
|
2764
|
+
"change": "rewritten",
|
|
2765
|
+
"slice": "3D",
|
|
2766
|
+
"names": [
|
|
2767
|
+
"J4 turning it on leaves the key and consent named"
|
|
2768
|
+
],
|
|
2769
|
+
"reason": "The switch was pressed on the Knowledge view; the press is now the route it called.",
|
|
2770
|
+
"replacement": "The assertion on the gates left named stays; the switch is turned on with POST /api/doccat/jev.",
|
|
2771
|
+
"pm_approval": {
|
|
2772
|
+
"by": "wawan",
|
|
2773
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2774
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2775
|
+
"choice": "Approve all"
|
|
2776
|
+
}
|
|
2777
|
+
},
|
|
2778
|
+
{
|
|
2779
|
+
"id": "E67",
|
|
2780
|
+
"group": "E",
|
|
2781
|
+
"file": "workspace/pm-doc-category-test.js",
|
|
2782
|
+
"section": "C7 apply writes the one category line (it pressed the diff's apply control)",
|
|
2783
|
+
"change": "rewritten",
|
|
2784
|
+
"slice": "3D",
|
|
2785
|
+
"names": [
|
|
2786
|
+
"C7 apply writes the one category line into the frontmatter, and nothing else changes"
|
|
2787
|
+
],
|
|
2788
|
+
"reason": "The apply was pressed on the Knowledge view; it is now the confirmed POST /api/doccat/writeback the press called.",
|
|
2789
|
+
"replacement": "The file content is asserted exactly as before, and the route's own answer is checked too.",
|
|
2790
|
+
"pm_approval": {
|
|
2791
|
+
"by": "wawan",
|
|
2792
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2793
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2794
|
+
"choice": "Approve all"
|
|
2795
|
+
}
|
|
2796
|
+
},
|
|
2797
|
+
{
|
|
2798
|
+
"id": "E68",
|
|
2799
|
+
"group": "E",
|
|
2800
|
+
"file": "workspace/pm-r29-reports-addrepo-test.js",
|
|
2801
|
+
"section": "the setup of the Reports and Add repository boards, and the closing page-error check",
|
|
2802
|
+
"change": "removed",
|
|
2803
|
+
"slice": "3D",
|
|
2804
|
+
"names": [
|
|
2805
|
+
"setup: two repositories are registered",
|
|
2806
|
+
"setup: the four report schedules are set up for alpha only",
|
|
2807
|
+
"setup: the server lists the ingest proposal",
|
|
2808
|
+
"no uncaught page errors"
|
|
2809
|
+
],
|
|
2810
|
+
"reason": "They prepare, and close, the browser run of the Reports tab and the Add repository tab. C08 to C11 remove both runs, and the replacement suite reads the sources and starts no server.",
|
|
2811
|
+
"replacement": "pm-r29-reports-addrepo-test.js reads the views table and the Settings source (cut-stub.js). The Reports place has its own suite, pm-reports-test.js (5C).",
|
|
2812
|
+
"pm_approval": {
|
|
2813
|
+
"by": "wawan",
|
|
2814
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2815
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2816
|
+
"choice": "Approve all"
|
|
2817
|
+
}
|
|
2818
|
+
},
|
|
2819
|
+
{
|
|
2820
|
+
"id": "E69",
|
|
2821
|
+
"group": "E",
|
|
2822
|
+
"file": "workspace/status-facts-panel.test.js",
|
|
2823
|
+
"section": "the detail renders the facts after the phases",
|
|
2824
|
+
"change": "replaced",
|
|
2825
|
+
"slice": "3D",
|
|
2826
|
+
"names": [
|
|
2827
|
+
"the detail renders the facts after the phases and gives them their own block"
|
|
2828
|
+
],
|
|
2829
|
+
"reason": "The synthetic rung phases are cut with the Task tab (R29), so the facts no longer follow a phase block. The source regex named phaseBlock.",
|
|
2830
|
+
"replacement": "\"the detail renders the facts after the next steps and gives them their own block\": the facts follow the next steps in both layouts, there is no phaseBlock, and the block keeps data-facts.",
|
|
2831
|
+
"pm_approval": {
|
|
2832
|
+
"by": "wawan",
|
|
2833
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2834
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2835
|
+
"choice": "Approve all"
|
|
2836
|
+
}
|
|
2837
|
+
},
|
|
2838
|
+
{
|
|
2839
|
+
"id": "E70",
|
|
2840
|
+
"group": "E",
|
|
2841
|
+
"file": "workspace/status-facts-panel.test.js",
|
|
2842
|
+
"section": "no phase, dot or count code reads rec.facts",
|
|
2843
|
+
"change": "rewritten",
|
|
2844
|
+
"slice": "3D",
|
|
2845
|
+
"names": [
|
|
2846
|
+
"no phase, dot or count code reads rec.facts, the engine fields or the suggestions"
|
|
2847
|
+
],
|
|
2848
|
+
"reason": "The panel-detail phaseBlock it sliced out of the source is deleted with the rung phases, so only the fixture's phasesFor is left to read.",
|
|
2849
|
+
"replacement": "The assertion stays, over the fixture's phasesFor; the absence of phaseBlock is asserted in the replaced assertion above.",
|
|
2850
|
+
"pm_approval": {
|
|
2851
|
+
"by": "wawan",
|
|
2852
|
+
"at": "2026-10-05T21:26:13Z",
|
|
2853
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrTUmTibL2oVtqKmYyFLwZqqy",
|
|
2854
|
+
"choice": "Approve all"
|
|
2855
|
+
}
|
|
2856
|
+
},
|
|
2857
|
+
{
|
|
2858
|
+
"id": "E71",
|
|
2859
|
+
"group": "E",
|
|
2860
|
+
"file": "workspace/test.js",
|
|
2861
|
+
"section": "E3b: the outcome-check assertion over /api/needs (the other E3b assertions stay as they are)",
|
|
2862
|
+
"change": "rewritten",
|
|
2863
|
+
"slice": "3-review-fix",
|
|
2864
|
+
"reason": "Run 3 Review fix: initiative-needs.js now derives the initiative rows on the first needs read, so /api/needs also carries a no-anchor row (kind 8) for the fixture's initiatives. The assertion meant the outcome rows; it read any row naming the initiative.",
|
|
2865
|
+
"replacement": "The assertion stays under the same name; it now reads only the rows of kind 'outcome'.",
|
|
2866
|
+
"pm_approval": {
|
|
2867
|
+
"by": "wawan",
|
|
2868
|
+
"at": "2026-10-05T21:40:08Z",
|
|
2869
|
+
"ref": "cmsg_013JPURC1ztnbLXzFTDXBNrT8VFeAUKakEPKsnYc52rHvJ",
|
|
2870
|
+
"choice": "Approved e71"
|
|
2871
|
+
},
|
|
2872
|
+
"names": [
|
|
2873
|
+
"E3b: an outcome check recorded ONLY in planning/runs/ disposes its initiative"
|
|
2874
|
+
]
|
|
2875
|
+
}
|
|
2876
|
+
]
|
|
2877
|
+
}
|