@bongos/core 1.24.43 → 1.24.44

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.
Files changed (62) hide show
  1. package/.bongos-core.json +70 -75
  2. package/docs/copy-inventory.md +33 -65
  3. package/docs/copy-registry.json +78 -437
  4. package/docs/file-map.md +1 -1
  5. package/docs/module-api-changelog.md +2 -0
  6. package/docs/page-inventory.json +8 -36
  7. package/docs/page-readings.json +188 -245
  8. package/modules/hall-ui/public/ai-studio.html +2 -2
  9. package/modules/hall-ui/public/atlas.html +2 -2
  10. package/modules/hall-ui/public/blockers.html +2 -2
  11. package/modules/hall-ui/public/board-room.html +2 -2
  12. package/modules/hall-ui/public/city.html +2 -2
  13. package/modules/hall-ui/public/collab.html +2 -2
  14. package/modules/hall-ui/public/commands.html +2 -2
  15. package/modules/hall-ui/public/copy-desk.html +2 -2
  16. package/modules/hall-ui/public/craft-mode.js +1 -1
  17. package/modules/hall-ui/public/deploy.html +2 -2
  18. package/modules/hall-ui/public/goal-map.html +2 -2
  19. package/modules/hall-ui/public/goals.html +14 -2
  20. package/modules/hall-ui/public/government.html +2 -2
  21. package/modules/hall-ui/public/idea.html +2 -2
  22. package/modules/hall-ui/public/ideas.html +2 -2
  23. package/modules/hall-ui/public/index.html +2 -2
  24. package/modules/hall-ui/public/market-watch-item.html +2 -2
  25. package/modules/hall-ui/public/market-watch-rules.html +2 -2
  26. package/modules/hall-ui/public/market-watch.html +2 -2
  27. package/modules/hall-ui/public/modules.html +2 -2
  28. package/modules/hall-ui/public/money.html +2 -2
  29. package/modules/hall-ui/public/my-agents.html +2 -2
  30. package/modules/hall-ui/public/primer.html +2 -2
  31. package/modules/hall-ui/public/profile.html +2 -2
  32. package/modules/hall-ui/public/project-settings.html +2 -2
  33. package/modules/hall-ui/public/roadmap.css +7 -138
  34. package/modules/hall-ui/public/roadmap.js +35 -293
  35. package/modules/hall-ui/public/roster.html +2 -2
  36. package/modules/hall-ui/public/settings.html +2 -2
  37. package/modules/hall-ui/public/shell.js +3 -3
  38. package/modules/hall-ui/public/street.html +2 -2
  39. package/modules/hall-ui/public/studio.html +2 -2
  40. package/modules/hall-ui/public/task.html +2 -2
  41. package/modules/hall-ui/public/thinking.html +2 -2
  42. package/modules/hall-ui/public/tweak-editor.html +2 -2
  43. package/modules/hall-ui/public/watch.html +2 -2
  44. package/modules/hall-ui/public/work.html +3 -3
  45. package/modules/onboarding/founding-mode.js +2 -1
  46. package/package-lock.json +2 -2
  47. package/package.json +1 -1
  48. package/release-notes.json +6 -0
  49. package/scripts/bongos/gen-hall-sitemap.js +1 -0
  50. package/src/bongos/serve-internal.js +6 -6
  51. package/src/module-api.js +1 -1
  52. package/tests/craft_mode_nav.mjs +2 -1
  53. package/tests/founding_mode.mjs +5 -3
  54. package/tests/hall_goals_band.mjs +88 -0
  55. package/tests/hall_kit_charts.mjs +4 -3
  56. package/tests/hall_nav.mjs +5 -2
  57. package/tests/hall_page_gate_map.mjs +5 -1
  58. package/tests/hall_reading_world.mjs +17 -18
  59. package/tests/hall_sitemap.mjs +2 -1
  60. package/tests/nav_permission_atoms.mjs +3 -2
  61. package/modules/hall-ui/public/roadmap.html +0 -58
  62. package/modules/hall-ui/public/roadmap.states.json +0 -31
@@ -88,8 +88,8 @@
88
88
 
89
89
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
90
90
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
91
- <script src="/builders/craft-mode.js?v=2026-11-05-numbers"></script>
92
- <script src="/builders/shell.js?v=2026-11-05-numbers"></script>
91
+ <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
92
+ <script src="/builders/shell.js?v=2026-11-05-goals"></script>
93
93
  <script src="/builders/palette.js" defer></script>
94
94
  <script src="/builders/tweak-editor-lib.js?v=2026-09-28-tw23"></script>
95
95
  <script src="/builders/studio-lib.js?v=2026-10-09-day"></script>
@@ -91,8 +91,8 @@
91
91
 
92
92
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
93
93
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
94
- <script src="/builders/craft-mode.js?v=2026-11-05-numbers"></script>
95
- <script src="/builders/shell.js?v=2026-11-05-numbers"></script>
94
+ <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
95
+ <script src="/builders/shell.js?v=2026-11-05-goals"></script>
96
96
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
97
97
  <script src="/builders/palette.js" defer></script>
98
98
  <script src="/builders/atlas.js?v=2026-09-02-index" defer></script>
@@ -60,8 +60,8 @@
60
60
  chrome exists before the page script runs. -->
61
61
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
62
62
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
63
- <script src="/builders/craft-mode.js?v=2026-11-05-numbers"></script>
64
- <script src="/builders/shell.js?v=2026-11-05-numbers"></script>
63
+ <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
64
+ <script src="/builders/shell.js?v=2026-11-05-goals"></script>
65
65
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
66
66
  <script src="/builders/palette.js" defer></script>
67
67
  <!-- the branding pack's currency label, loaded BEFORE blockers.js. -->
@@ -62,8 +62,8 @@
62
62
 
63
63
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
64
64
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
65
- <script src="/builders/craft-mode.js?v=2026-11-05-numbers"></script>
66
- <script src="/builders/shell.js?v=2026-11-05-numbers"></script>
65
+ <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
66
+ <script src="/builders/shell.js?v=2026-11-05-goals"></script>
67
67
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
68
68
  <script src="/builders/palette.js" defer></script>
69
69
  <script src="/builders/hall-kit.js"></script>
@@ -107,8 +107,8 @@
107
107
 
108
108
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
109
109
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers" defer></script>
110
- <script src="/builders/craft-mode.js?v=2026-11-05-numbers" defer></script>
111
- <script src="/builders/shell.js?v=2026-11-05-numbers" defer></script>
110
+ <script src="/builders/craft-mode.js?v=2026-11-05-goals" defer></script>
111
+ <script src="/builders/shell.js?v=2026-11-05-goals" defer></script>
112
112
  <script src="/builders/palette.js" defer></script>
113
113
  <script src="/builders/gov-living.js?v=2026-10-09-positions1" defer></script>
114
114
  <script src="/builders/gov-feeds.js?v=2026-10-09-living3" defer></script>
@@ -161,8 +161,8 @@
161
161
 
162
162
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
163
163
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
164
- <script src="/builders/craft-mode.js?v=2026-11-05-numbers"></script>
165
- <script src="/builders/shell.js?v=2026-11-05-numbers"></script>
164
+ <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
165
+ <script src="/builders/shell.js?v=2026-11-05-goals"></script>
166
166
  <script src="/builders/palette.js" defer></script>
167
167
  <script src="/builders/collab-lib.js?v=2026-09-24-archive"></script>
168
168
  <script src="/builders/collab.js?v=2026-09-24-archive"></script>
@@ -53,8 +53,8 @@
53
53
 
54
54
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
55
55
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
56
- <script src="/builders/craft-mode.js?v=2026-11-05-numbers"></script>
57
- <script src="/builders/shell.js?v=2026-11-05-numbers"></script>
56
+ <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
57
+ <script src="/builders/shell.js?v=2026-11-05-goals"></script>
58
58
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
59
59
  <script src="/builders/palette.js" defer></script>
60
60
  <script src="/builders/hall-kit.js"></script>
@@ -179,8 +179,8 @@
179
179
 
180
180
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
181
181
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
182
- <script src="/builders/craft-mode.js?v=2026-11-05-numbers"></script>
183
- <script src="/builders/shell.js?v=2026-11-05-numbers"></script>
182
+ <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
183
+ <script src="/builders/shell.js?v=2026-11-05-goals"></script>
184
184
  <script src="/builders/palette.js" defer></script>
185
185
  <script src="/builders/hall-kit.js"></script>
186
186
  <script src="/builders/copy-desk.js?v=2026-09-01-redesign"></script>
@@ -104,7 +104,7 @@
104
104
  var ALWAYS_TABS = ['roster', 'collab', 'profile', 'my-agents',
105
105
  'primer', 'commands', 'atlas', 'modules', 'apidocs'];
106
106
  var MODE_TABS = {
107
- building: ['home', 'roadmap', 'goals', 'goal-map', 'work', 'blockers', 'thinking', 'studio',
107
+ building: ['home', 'goals', 'goal-map', 'work', 'blockers', 'thinking', 'studio',
108
108
  'market-watch'],
109
109
  artistry: ['studio', 'goals', 'thinking'],
110
110
  ideating: ['goal-map', 'thinking', 'goals', 'market-watch'],
@@ -80,8 +80,8 @@
80
80
 
81
81
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
82
82
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
83
- <script src="/builders/craft-mode.js?v=2026-11-05-numbers"></script>
84
- <script src="/builders/shell.js?v=2026-11-05-numbers"></script>
83
+ <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
84
+ <script src="/builders/shell.js?v=2026-11-05-goals"></script>
85
85
  <script src="/builders/palette.js" defer></script>
86
86
  <script src="/builders/hall-kit.js"></script>
87
87
  <!-- the shared ask card the move is drawn with (task 1004829) -->
@@ -139,8 +139,8 @@
139
139
 
140
140
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
141
141
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
142
- <script src="/builders/craft-mode.js?v=2026-11-05-numbers"></script>
143
- <script src="/builders/shell.js?v=2026-11-05-numbers"></script>
142
+ <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
143
+ <script src="/builders/shell.js?v=2026-11-05-goals"></script>
144
144
  <script src="/builders/palette.js" defer></script>
145
145
 
146
146
  <script src="/builders/idea-objects.js?v=2026-09-27-split"></script>
@@ -17,6 +17,8 @@
17
17
  styles now live in style.css's hall-kit section. -->
18
18
  <link rel="stylesheet" href="/builders/hall-ask.css">
19
19
  <link rel="stylesheet" href="/builders/goals.css">
20
+ <!-- task 1005051: the version band (the Roadmap page folded in) draws with its sheet. -->
21
+ <link rel="stylesheet" href="/builders/roadmap.css">
20
22
  <link rel="stylesheet" href="/builders/notes-panel.css">
21
23
  </head>
22
24
  <body data-page="goals" data-page-title="Goals">
@@ -44,6 +46,13 @@
44
46
  on the shell's .scroll. It used to be a bar of twelve controls on the
45
47
  ground over one panel PER GROUP. -->
46
48
  <section id="goals-list-view" aria-labelledby="goals-list-h">
49
+ <!-- task 1005051 (owner decision 2026-11-03, idea 1001315): Goals opens with
50
+ the version's progress and the timeline — the Roadmap page folded in,
51
+ and /roadmap redirects here. roadmap.js fills #rm-root. -->
52
+ <div class="scroll" id="goals-version" aria-labelledby="goals-version-h">
53
+ <h2 id="goals-version-h" class="sr-only">The version</h2>
54
+ <div id="rm-root"><div class="hall-loading" role="status">Loading the version…</div></div>
55
+ </div>
47
56
  <h2 id="goals-list-h" class="sr-only">All goals</h2>
48
57
  <div class="scroll goals-panel">
49
58
  <!-- task 2171: the filter bar is built by OTBKit.makeFilterBar —
@@ -243,8 +252,8 @@
243
252
 
244
253
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
245
254
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
246
- <script src="/builders/craft-mode.js?v=2026-11-05-numbers"></script>
247
- <script src="/builders/shell.js?v=2026-11-05-numbers"></script>
255
+ <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
256
+ <script src="/builders/shell.js?v=2026-11-05-goals"></script>
248
257
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
249
258
  <script src="/builders/palette.js" defer></script>
250
259
  <!-- task 1004727: the ONE karma vote control every task/idea list renders -->
@@ -281,5 +290,8 @@
281
290
  <script src="/builders/notes-panel.js"></script>
282
291
  <script src="/builders/goals-render.js?v=2026-09-30-uat2"></script>
283
292
  <script src="/builders/goals-page.js?v=2026-09-30-uat2"></script>
293
+ <!-- task 1005051: the version band — the timeline's builder, then the band. -->
294
+ <script src="/builders/roadmap-timeline.js"></script>
295
+ <script src="/builders/roadmap.js?v=2026-11-05-goals"></script>
284
296
  </body>
285
297
  </html>
@@ -156,8 +156,8 @@
156
156
 
157
157
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
158
158
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
159
- <script src="/builders/craft-mode.js?v=2026-11-05-numbers"></script>
160
- <script src="/builders/shell.js?v=2026-11-05-numbers"></script>
159
+ <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
160
+ <script src="/builders/shell.js?v=2026-11-05-goals"></script>
161
161
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
162
162
  <script src="/builders/palette.js" defer></script>
163
163
  <script src="/builders/hall-kit.js"></script>
@@ -52,8 +52,8 @@
52
52
 
53
53
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
54
54
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
55
- <script src="/builders/craft-mode.js?v=2026-11-05-numbers"></script>
56
- <script src="/builders/shell.js?v=2026-11-05-numbers"></script>
55
+ <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
56
+ <script src="/builders/shell.js?v=2026-11-05-goals"></script>
57
57
  <script src="/builders/palette.js" defer></script>
58
58
  <!-- task-detail.js still owns the #/idea/N and #/blocker/N overlay, so a ref
59
59
  written inside an idea's own prose keeps resolving from this page. -->
@@ -227,8 +227,8 @@
227
227
 
228
228
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
229
229
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
230
- <script src="/builders/craft-mode.js?v=2026-11-05-numbers"></script>
231
- <script src="/builders/shell.js?v=2026-11-05-numbers"></script>
230
+ <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
231
+ <script src="/builders/shell.js?v=2026-11-05-goals"></script>
232
232
  <script src="/builders/palette.js" defer></script>
233
233
  <!-- task 1004727: the ONE karma vote control every task/idea list renders -->
234
234
  <script src="/builders/vote-control.js"></script>
@@ -108,8 +108,8 @@
108
108
  before the craft picker so the two never stack. Home only. -->
109
109
  <script src="/builders/welcome-boot.js?v=2026-10-23-city1" defer></script>
110
110
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers" defer></script>
111
- <script src="/builders/craft-mode.js?v=2026-11-05-numbers" defer></script>
112
- <script src="/builders/shell.js?v=2026-11-05-numbers" defer></script>
111
+ <script src="/builders/craft-mode.js?v=2026-11-05-goals" defer></script>
112
+ <script src="/builders/shell.js?v=2026-11-05-goals" defer></script>
113
113
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
114
114
  <script src="/builders/palette.js" defer></script>
115
115
  <!-- task 2166: the shared component kit (window.OTBKit) — pager/ledger/rail.
@@ -73,8 +73,8 @@
73
73
 
74
74
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
75
75
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
76
- <script src="/builders/craft-mode.js?v=2026-11-05-numbers"></script>
77
- <script src="/builders/shell.js?v=2026-11-05-numbers"></script>
76
+ <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
77
+ <script src="/builders/shell.js?v=2026-11-05-goals"></script>
78
78
  <script src="/builders/palette.js" defer></script>
79
79
  <script src="/builders/hall-kit.js"></script>
80
80
  <script src="/builders/market-watch-lib.js"></script>
@@ -42,8 +42,8 @@
42
42
 
43
43
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
44
44
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
45
- <script src="/builders/craft-mode.js?v=2026-11-05-numbers"></script>
46
- <script src="/builders/shell.js?v=2026-11-05-numbers"></script>
45
+ <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
46
+ <script src="/builders/shell.js?v=2026-11-05-goals"></script>
47
47
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
48
48
  <script src="/builders/palette.js" defer></script>
49
49
  <script src="/builders/hall-kit.js"></script>
@@ -187,8 +187,8 @@
187
187
 
188
188
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
189
189
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
190
- <script src="/builders/craft-mode.js?v=2026-11-05-numbers"></script>
191
- <script src="/builders/shell.js?v=2026-11-05-numbers"></script>
190
+ <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
191
+ <script src="/builders/shell.js?v=2026-11-05-goals"></script>
192
192
  <script src="/builders/palette.js" defer></script>
193
193
  <script src="/builders/hall-kit.js"></script>
194
194
  <script src="/builders/market-watch-lib.js"></script>
@@ -127,8 +127,8 @@
127
127
 
128
128
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
129
129
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
130
- <script src="/builders/craft-mode.js?v=2026-11-05-numbers"></script>
131
- <script src="/builders/shell.js?v=2026-11-05-numbers"></script>
130
+ <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
131
+ <script src="/builders/shell.js?v=2026-11-05-goals"></script>
132
132
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
133
133
  <script src="/builders/palette.js" defer></script>
134
134
  <script src="/builders/brand-apply.js"></script>
@@ -81,8 +81,8 @@
81
81
 
82
82
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
83
83
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
84
- <script src="/builders/craft-mode.js?v=2026-11-05-numbers"></script>
85
- <script src="/builders/shell.js?v=2026-11-05-numbers"></script>
84
+ <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
85
+ <script src="/builders/shell.js?v=2026-11-05-goals"></script>
86
86
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
87
87
  <script src="/builders/palette.js" defer></script>
88
88
  <script src="/builders/hall-kit.js"></script>
@@ -83,8 +83,8 @@
83
83
 
84
84
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
85
85
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
86
- <script src="/builders/craft-mode.js?v=2026-11-05-numbers"></script>
87
- <script src="/builders/shell.js?v=2026-11-05-numbers"></script>
86
+ <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
87
+ <script src="/builders/shell.js?v=2026-11-05-goals"></script>
88
88
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
89
89
  <script src="/builders/palette.js" defer></script>
90
90
  <script src="/builders/gov-living.js?v=2026-10-10-real1"></script>
@@ -112,8 +112,8 @@
112
112
 
113
113
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
114
114
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
115
- <script src="/builders/craft-mode.js?v=2026-11-05-numbers"></script>
116
- <script src="/builders/shell.js?v=2026-11-05-numbers"></script>
115
+ <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
116
+ <script src="/builders/shell.js?v=2026-11-05-goals"></script>
117
117
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
118
118
  <script src="/builders/palette.js" defer></script>
119
119
  <!-- the shared markdown reader (window.OTBMdReader) — primer.js renders through
@@ -248,8 +248,8 @@
248
248
  chrome exists before the page script runs. -->
249
249
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
250
250
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
251
- <script src="/builders/craft-mode.js?v=2026-11-05-numbers"></script>
252
- <script src="/builders/shell.js?v=2026-11-05-numbers"></script>
251
+ <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
252
+ <script src="/builders/shell.js?v=2026-11-05-goals"></script>
253
253
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
254
254
  <script src="/builders/palette.js" defer></script>
255
255
  <!-- task 1004727: the ONE karma vote control every task/idea list renders -->
@@ -76,8 +76,8 @@
76
76
 
77
77
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
78
78
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
79
- <script src="/builders/craft-mode.js?v=2026-11-05-numbers"></script>
80
- <script src="/builders/shell.js?v=2026-11-05-numbers"></script>
79
+ <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
80
+ <script src="/builders/shell.js?v=2026-11-05-goals"></script>
81
81
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
82
82
  <script src="/builders/palette.js" defer></script>
83
83
  <script src="/builders/hall-kit.js"></script>
@@ -1,12 +1,14 @@
1
- /* roadmap.css — the Roadmap "command deck" (task 1002426; lifted out of the
1
+ /* roadmap.css — the version band at the top of Goals (task 1005051: the Roadmap
2
+ page folded into Goals and /roadmap redirects there). Once the Roadmap
3
+ "command deck" (task 1002426; lifted out of the
2
4
  page's inline <style> by task 1002176; rebuilt into the chrome world by task
3
5
  1003306, goal 1000081). The ?v= cache-bust is stamped automatically from this
4
6
  file's content hash at boot (src/asset-version.js).
5
7
 
6
- THE PAGE: a program-level hero, then versions GROUPED BY their real status
7
- (planning=Staged · building=In flight · frozen=Parked · shipped=Shipped),
8
- and a SUMMARIZED goal layer per version (status bar + only the goals active
9
- right now, the full list on the Goals page).
8
+ THE BAND: each version in flight (the focus version first) — its phase, name,
9
+ ring, task count and lifecycle bar — then the timeline. The program hero, the
10
+ per-version goal summaries and the staged / parked / shipped cards it drew as
11
+ a page went with the page; the goals are the list right below the band.
10
12
 
11
13
  It is a reading room by task, not by archetype: nothing here is long-form, so
12
14
  it does not load room.css. What it takes from the world is the world itself —
@@ -28,13 +30,6 @@
28
30
 
29
31
  `--line` is a WIDTH; the hairline's colour is --rule / --rule-soft. */
30
32
 
31
- body[data-page="roadmap"] {
32
- --rm-plan: color-mix(in srgb, var(--ink) 16%, var(--bg));
33
- --rm-terra-weak: color-mix(in srgb, var(--terracotta) 13%, var(--bg-card));
34
- }
35
-
36
- .rm-num { font-variant-numeric: tabular-nums; }
37
-
38
33
  /* ---- shared atoms ----
39
34
  The chips are the deck's label voice: they name a KIND, so they take the
40
35
  label tokens rather than a hand-written uppercase of their own. */
@@ -66,56 +61,11 @@ body[data-page="roadmap"] {
66
61
  .rm-ring b { position:relative; z-index:1; font-family:var(--font-display); font-size:16px; font-weight:300;
67
62
  font-variant-numeric:tabular-nums; letter-spacing:-.02em; }
68
63
  .rm-ring b i { font-style:normal; font-size:9.5px; font-weight:400; color:var(--ink-faint); }
69
-
70
- /* goal-status bar (segmented by goal COUNT: achieved / in progress / not started) */
71
- .rm-gbar { display:flex; height:8px; border-radius:var(--radius-pill); overflow:hidden;
72
- background:var(--rule-soft); }
73
- .rm-gbar__s { height:100%; }
74
- .rm-gbar__s--ach { background:var(--ok); }
75
- .rm-gbar__s--prog { background:var(--accent); }
76
- .rm-gbar__s--plan { background:var(--rm-plan); }
77
-
78
- /* ---- program hero ----
79
- v3's figure band: one glass strip of numbers, not a tinted card. The old
80
- accent gradient spent the warm colour on something nobody can press. */
81
- .rm-hero { background:var(--glass); border:var(--line) solid var(--glass-edge);
82
- -webkit-backdrop-filter:blur(var(--glass-blur)); backdrop-filter:blur(var(--glass-blur));
83
- border-radius:var(--radius); padding:var(--sp-md); margin-bottom:var(--sp-md); }
84
- .rm-hero__top { display:grid; grid-template-columns:auto 1fr; gap:26px; align-items:center; }
85
- .rm-big { display:flex; align-items:baseline; gap:3px; }
86
- .rm-big .n { font-family:var(--font-display); font-size:52px; font-weight:300; line-height:.95;
87
- letter-spacing:-.03em; font-variant-numeric:tabular-nums; }
88
- .rm-big .u { font-size:18px; font-weight:400; color:var(--ink-faint); }
89
- /* The cap is load-bearing — the hero's left column is `auto`, so without it the
90
- caption sizes to its content and never wraps under the figure. It is a length
91
- and not a `ch`: this is a label in the mono face, and a `ch` there is the zero
92
- glyph's width, which is the measurement that put 90 characters on the primer. */
93
- .rm-lab { font-family:var(--label-face); font-size:var(--label-size); font-weight:400;
94
- letter-spacing:var(--label-space); text-transform:var(--label-case); color:var(--ink-faint);
95
- margin-top:7px; max-width:8rem; }
96
- .rm-hbar { height:15px; }
97
- .rm-stats { display:flex; flex-wrap:wrap; gap:9px 24px; margin-top:14px; }
98
- .rm-stat { display:flex; flex-direction:column; gap:1px; }
99
- .rm-stat .v { font-family:var(--font-display); font-size:19px; font-weight:300;
100
- font-variant-numeric:tabular-nums; letter-spacing:-.01em; }
101
- .rm-stat .k { font-size:11.5px; color:var(--ink-faint); }
102
- .rm-stat .v.sh { color:var(--ok); } .rm-stat .v.co { color:var(--info); } .rm-stat .v.cm { color:var(--warn); }
103
- .rm-hgoals { display:flex; align-items:center; gap:14px; flex-wrap:wrap; margin-top:16px; padding-top:15px;
104
- border-top:var(--line) solid var(--rule-soft); }
105
- .rm-hgoals .glab { font-family:var(--label-face); font-size:var(--label-size); font-weight:400;
106
- letter-spacing:var(--label-space); text-transform:var(--label-case); color:var(--ink-faint); }
107
- .rm-hgoals .rm-gbar { width:200px; max-width:44vw; }
108
- .rm-hgoals .gleg { font-size:12.5px; color:var(--ink-soft); }
109
- .rm-hgoals .gleg b { color:var(--ink); font-weight:500; font-variant-numeric:tabular-nums; }
110
-
111
64
  /* ---- section rhythm ---- */
112
65
  .rm-sec { margin-top:var(--sp-md); }
113
66
  .rm-sec__h { display:flex; align-items:center; gap:10px; margin:0 2px 13px; }
114
67
  .rm-sec__dot { width:8px; height:8px; border-radius:50%; }
115
68
  .rm-sec__dot--flight { background:var(--ok); }
116
- .rm-sec__dot--staged { background:var(--accent); }
117
- .rm-sec__dot--parked { background:var(--ink-faint); }
118
- .rm-sec__dot--shipped { background:var(--sea); }
119
69
  .rm-sec__t { font-family:var(--label-face); font-size:var(--label-size); font-weight:400;
120
70
  letter-spacing:var(--label-space); text-transform:var(--label-case); color:var(--ink); }
121
71
  .rm-sec__n { font-size:11.5px; color:var(--ink-faint); font-variant-numeric:tabular-nums;
@@ -129,10 +79,6 @@ body[data-page="roadmap"] {
129
79
  .rm-card { background:var(--bg-card); border:var(--line) solid transparent;
130
80
  border-radius:var(--radius); padding:var(--sp-md); }
131
81
  .rm-card--feat { grid-column:1 / -1; }
132
- .rm-card--parked { background:var(--glass); }
133
- /* staged is the one card that IS a drawn edge, and it earns it: a dashed border
134
- is the deck's whole signal that the version is not real yet. */
135
- .rm-card--staged { background:none; border-style:dashed; border-color:var(--rule); }
136
82
  .rm-row { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
137
83
  .rm-name { font-family:var(--font-display); font-size:19px; font-weight:300; line-height:1.15;
138
84
  letter-spacing:-.03em; margin:9px 0 0; }
@@ -143,46 +89,8 @@ body[data-page="roadmap"] {
143
89
  .rm-cardprog { margin-top:14px; }
144
90
  .rm-count { display:flex; justify-content:space-between; gap:10px; font-size:12.5px; color:var(--ink-soft); margin-bottom:6px; }
145
91
  .rm-count b { color:var(--ink); font-weight:500; font-variant-numeric:tabular-nums; }
146
- .rm-featgrid { display:grid; grid-template-columns:1.05fr 1fr; gap:22px; align-items:start; }
147
- .rm-featgrid__l { min-width:0; }
148
92
  .rm-feat-top { display:flex; align-items:flex-start; gap:16px; }
149
93
  .rm-feat-top .rt { flex:1; min-width:0; }
150
-
151
- /* ---- goals block ---- */
152
- .rm-goals { min-width:0; }
153
- .rm-goals__frame { background:var(--glass); border:var(--line) solid var(--glass-edge);
154
- border-radius:var(--radius-sm); padding:var(--sp-sm); }
155
- .rm-goals__h { display:flex; align-items:baseline; justify-content:space-between; gap:8px; margin-bottom:10px; }
156
- .rm-goals__h .t { font-family:var(--label-face); font-size:var(--label-size); font-weight:400;
157
- letter-spacing:var(--label-space); text-transform:var(--label-case); color:var(--ink-faint); }
158
- .rm-goals__h .n { font-size:12px; color:var(--ink-soft); font-variant-numeric:tabular-nums; }
159
- .rm-gdist { display:flex; gap:12px; flex-wrap:wrap; margin-top:9px; font-size:12.5px; color:var(--ink-soft); }
160
- .rm-gdist span { display:inline-flex; align-items:center; gap:6px; }
161
- .rm-gdist i { width:9px; height:9px; border-radius:2px; }
162
- .rm-gdist i.rm-ach { background:var(--ok); } .rm-gdist i.rm-prog { background:var(--accent); } .rm-gdist i.rm-plan { background:var(--rm-plan); }
163
- .rm-gdist b { color:var(--ink); font-weight:500; font-variant-numeric:tabular-nums; }
164
- .rm-ginp { margin-top:14px; }
165
- .rm-ginp__cap { font-family:var(--label-face); font-size:var(--label-size); font-weight:400;
166
- letter-spacing:var(--label-space); text-transform:var(--label-case); color:var(--ink-faint); margin-bottom:2px; }
167
- .rm-goal { display:flex; align-items:center; gap:10px; padding:4px 0; }
168
- .rm-goal + .rm-goal { border-top:var(--line) solid var(--rule-soft); }
169
- .rm-goal__dot { flex:none; width:8px; height:8px; border-radius:50%; background:var(--accent); }
170
- /* THE 24px FLOOR, BOTH AXES (task 1003304's rule, applied here). This is a link
171
- in a row whose only height was its 13px line box plus 7px of row padding —
172
- measured 20px, and it is the deck's most-clicked target. The row's padding
173
- comes down by the same amount the link's goes up, so the target grows and the
174
- list does not re-space around it. */
175
- .rm-goal__t { flex:1; min-width:0; display:flex; align-items:center; min-height:24px; padding:3px 0;
176
- font-size:13px; color:var(--ink); text-decoration:none;
177
- overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
178
- a.rm-goal__t:hover { color:var(--accent-ink); text-decoration:underline; }
179
- .rm-goal__ready { flex:none; font-family:var(--label-face); font-size:10px; font-weight:400;
180
- letter-spacing:var(--label-space); text-transform:var(--label-case);
181
- color:var(--ok); background:var(--ok-weak); padding:3px 7px; border-radius:var(--radius-pill); }
182
- .rm-goal__meter { flex:none; width:70px; height:5px; border-radius:var(--radius-pill); background:var(--rule-soft); overflow:hidden; }
183
- .rm-goal__meter i { display:block; height:100%; background:var(--accent); }
184
- .rm-goal__n { flex:none; font-size:11.5px; color:var(--ink-soft); font-variant-numeric:tabular-nums; min-width:28px; text-align:right; }
185
- .rm-goal__seed { flex:none; font-size:11.5px; color:var(--ink-faint); }
186
94
  /* the same floor: this link measured 19px */
187
95
  .rm-gmore { display:inline-flex; align-items:center; gap:6px; min-height:24px; margin-top:10px; padding:3px 0;
188
96
  font-size:12.5px; font-weight:500; color:var(--accent-ink); text-decoration:none; }
@@ -194,49 +102,10 @@ a.rm-goal__t:hover { color:var(--accent-ink); text-decoration:underline; }
194
102
  above zero (see admissionNote). */
195
103
  .rm-gadm { font-size:12.5px; color:var(--warn); margin:10px 0 0; }
196
104
  .rm-gadm b { font-weight:600; }
197
-
198
- /* parked note + staged state */
199
- .rm-parknote { display:flex; gap:9px; font-size:12.5px; color:var(--ink-soft); background:var(--bg-card);
200
- border-radius:var(--radius-sm); padding:10px 12px; margin-top:13px; }
201
- .rm-parknote svg { flex:none; width:15px; height:15px; margin-top:1px; color:var(--ink-faint); }
202
- .rm-staged-state { display:flex; align-items:center; gap:11px; margin-top:15px; padding:12px 14px;
203
- border:var(--line) dashed var(--rule); border-radius:var(--radius-sm); }
204
- .rm-staged-state svg { flex:none; width:18px; height:18px; color:var(--accent); }
205
- .rm-staged-state .s1 { font-size:13px; font-weight:500; color:var(--ink); }
206
- .rm-staged-state .s2 { font-size:12.5px; color:var(--ink-soft); margin-top:1px; }
207
- .rm-staged-state .s2 b { color:var(--ink); font-weight:500; font-variant-numeric:tabular-nums; }
208
-
209
- /* shipped strip */
210
- .rm-shipstrip { display:flex; flex-wrap:wrap; gap:10px; }
211
- .rm-shippill { display:flex; align-items:center; gap:11px; min-height:38px; background:var(--bg-card);
212
- border:var(--line) solid transparent; border-radius:var(--radius-pill); padding:8px 15px 8px 10px; text-decoration:none; }
213
- .rm-shippill:hover { border-color:var(--rule); }
214
- .rm-shippill .ok { width:20px; height:20px; border-radius:50%; background:var(--ok-weak); color:var(--ok);
215
- display:grid; place-items:center; font-size:11px; }
216
- .rm-shippill .nm { font-size:13px; font-weight:500; color:var(--ink); }
217
- .rm-shippill .mt { font-size:11.5px; color:var(--ink-faint); font-variant-numeric:tabular-nums; }
218
-
219
105
  @media (max-width:820px) {
220
106
  .rm-grid { grid-template-columns:1fr; }
221
- .rm-featgrid { grid-template-columns:1fr; }
222
- .rm-hero__top { grid-template-columns:1fr; gap:14px; }
223
107
  }
224
108
 
225
- /* A goal row is dot + title + ready pill + meter + count on ONE line, and the
226
- title is the only flexible item — so at 320 the four fixed ones eat the row
227
- and `flex: 1; min-width: 0` resolves the title to ZERO width. Measured: a
228
- 0x26 link, which passes the 24px floor's height and fails its width, and is
229
- invisible either way. The row wraps here instead: the title takes the first
230
- line whole and the meters follow under it. */
231
- @media (max-width:400px) {
232
- .rm-goal { flex-wrap:wrap; row-gap:2px; }
233
- /* the title takes the first line whole; the meter, count and ready pill
234
- follow under it. The dot goes — it is a decorative repeat of a state the
235
- meter already carries, and left in place it would sit alone above the
236
- title on a line of its own. */
237
- .rm-goal__dot { display:none; }
238
- .rm-goal__t { flex:1 0 100%; white-space:normal; }
239
- }
240
109
  /* Focus star (task 1004551): ink-faint when off, accent when on. */
241
110
  .rm-star { margin-left:auto; font-size:17px; line-height:1; color:var(--ink-faint); background:none; border:0; padding:0 2px; }
242
111
  .rm-star--on { color:var(--accent); }