@bongos/core 1.24.40 → 1.24.41

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 (69) hide show
  1. package/.bongos-core.json +75 -90
  2. package/docs/canonical-permissions.md +2 -1
  3. package/docs/copy-inventory.md +116 -120
  4. package/docs/copy-registry.json +151 -207
  5. package/docs/module-api-changelog.md +2 -0
  6. package/docs/page-inventory.json +11 -69
  7. package/docs/page-readings.json +382 -763
  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/gate.js +12 -5
  19. package/modules/hall-ui/public/goal-map.html +2 -2
  20. package/modules/hall-ui/public/goals.html +2 -2
  21. package/modules/hall-ui/public/government.html +2 -2
  22. package/modules/hall-ui/public/idea.html +2 -2
  23. package/modules/hall-ui/public/ideas.html +2 -2
  24. package/modules/hall-ui/public/index.html +2 -2
  25. package/modules/hall-ui/public/market-watch-item.html +2 -2
  26. package/modules/hall-ui/public/market-watch-rules.html +2 -2
  27. package/modules/hall-ui/public/market-watch.html +2 -2
  28. package/modules/hall-ui/public/modules.html +2 -2
  29. package/modules/hall-ui/public/money.html +2 -2
  30. package/modules/hall-ui/public/my-agents.html +2 -2
  31. package/modules/hall-ui/public/palette.js +10 -0
  32. package/modules/hall-ui/public/primer.html +2 -2
  33. package/modules/hall-ui/public/profile.html +2 -2
  34. package/modules/hall-ui/public/project-settings.html +2 -2
  35. package/modules/hall-ui/public/roadmap.html +2 -2
  36. package/modules/hall-ui/public/roster.html +2 -2
  37. package/modules/hall-ui/public/sessions.js +21 -10
  38. package/modules/hall-ui/public/settings.html +2 -2
  39. package/modules/hall-ui/public/shell.js +1 -2
  40. package/modules/hall-ui/public/street.html +2 -2
  41. package/modules/hall-ui/public/studio.html +2 -2
  42. package/modules/hall-ui/public/task.html +2 -2
  43. package/modules/hall-ui/public/thinking.html +2 -2
  44. package/modules/hall-ui/public/tweak-editor.html +2 -2
  45. package/modules/hall-ui/public/watch.html +120 -7
  46. package/modules/hall-ui/public/watch.js +11 -0
  47. package/modules/hall-ui/public/watch.states.json +49 -1
  48. package/modules/hall-ui/public/work.html +2 -2
  49. package/package-lock.json +2 -2
  50. package/package.json +1 -1
  51. package/release-notes.json +6 -0
  52. package/scripts/bongos/gen-hall-sitemap.js +2 -0
  53. package/src/bongos/serve-internal.js +15 -22
  54. package/src/module-api.js +1 -1
  55. package/tests/autonomy_builder_scope.mjs +2 -1
  56. package/tests/hall_audit.mjs +1 -1
  57. package/tests/hall_loading.mjs +13 -2
  58. package/tests/hall_nav.mjs +5 -2
  59. package/tests/hall_oversight_tabs.mjs +162 -0
  60. package/tests/hall_oversight_world.mjs +23 -9
  61. package/tests/hall_page_gate_map.mjs +7 -2
  62. package/tests/hall_roster_world.mjs +14 -9
  63. package/tests/hall_sessions_ledger.mjs +2 -1
  64. package/tests/nav_permission_atoms.mjs +3 -2
  65. package/tests/sessions_kit_pager.mjs +8 -4
  66. package/modules/hall-ui/public/gate.html +0 -76
  67. package/modules/hall-ui/public/gate.states.json +0 -60
  68. package/modules/hall-ui/public/sessions.html +0 -128
  69. package/modules/hall-ui/public/sessions.states.json +0 -59
@@ -88,8 +88,8 @@
88
88
 
89
89
  <script src="/builders/dom-utils.js?v=2026-10-25-escape"></script>
90
90
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
91
- <script src="/builders/craft-mode.js?v=2026-11-05-sections"></script>
92
- <script src="/builders/shell.js?v=2026-11-05-sections"></script>
91
+ <script src="/builders/craft-mode.js?v=2026-11-05-oversight"></script>
92
+ <script src="/builders/shell.js?v=2026-11-05-oversight"></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-10-25-escape"></script>
93
93
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
94
- <script src="/builders/craft-mode.js?v=2026-11-05-sections"></script>
95
- <script src="/builders/shell.js?v=2026-11-05-sections"></script>
94
+ <script src="/builders/craft-mode.js?v=2026-11-05-oversight"></script>
95
+ <script src="/builders/shell.js?v=2026-11-05-oversight"></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-10-25-escape"></script>
62
62
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
63
- <script src="/builders/craft-mode.js?v=2026-11-05-sections"></script>
64
- <script src="/builders/shell.js?v=2026-11-05-sections"></script>
63
+ <script src="/builders/craft-mode.js?v=2026-11-05-oversight"></script>
64
+ <script src="/builders/shell.js?v=2026-11-05-oversight"></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-10-25-escape"></script>
64
64
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
65
- <script src="/builders/craft-mode.js?v=2026-11-05-sections"></script>
66
- <script src="/builders/shell.js?v=2026-11-05-sections"></script>
65
+ <script src="/builders/craft-mode.js?v=2026-11-05-oversight"></script>
66
+ <script src="/builders/shell.js?v=2026-11-05-oversight"></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-10-25-escape"></script>
109
109
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab" defer></script>
110
- <script src="/builders/craft-mode.js?v=2026-11-05-sections" defer></script>
111
- <script src="/builders/shell.js?v=2026-11-05-sections" defer></script>
110
+ <script src="/builders/craft-mode.js?v=2026-11-05-oversight" defer></script>
111
+ <script src="/builders/shell.js?v=2026-11-05-oversight" 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-10-25-escape"></script>
163
163
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
164
- <script src="/builders/craft-mode.js?v=2026-11-05-sections"></script>
165
- <script src="/builders/shell.js?v=2026-11-05-sections"></script>
164
+ <script src="/builders/craft-mode.js?v=2026-11-05-oversight"></script>
165
+ <script src="/builders/shell.js?v=2026-11-05-oversight"></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-10-25-escape"></script>
55
55
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
56
- <script src="/builders/craft-mode.js?v=2026-11-05-sections"></script>
57
- <script src="/builders/shell.js?v=2026-11-05-sections"></script>
56
+ <script src="/builders/craft-mode.js?v=2026-11-05-oversight"></script>
57
+ <script src="/builders/shell.js?v=2026-11-05-oversight"></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-10-25-escape"></script>
181
181
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
182
- <script src="/builders/craft-mode.js?v=2026-11-05-sections"></script>
183
- <script src="/builders/shell.js?v=2026-11-05-sections"></script>
182
+ <script src="/builders/craft-mode.js?v=2026-11-05-oversight"></script>
183
+ <script src="/builders/shell.js?v=2026-11-05-oversight"></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>
@@ -109,7 +109,7 @@
109
109
  artistry: ['studio', 'goals', 'thinking'],
110
110
  ideating: ['goal-map', 'thinking', 'goals', 'market-watch'],
111
111
  governing: ['city', 'blockers', 'board-room',
112
- 'watch', 'gate', 'sessions', 'project-settings', 'money', 'deploy', 'government'],
112
+ 'watch', 'project-settings', 'money', 'deploy', 'government'],
113
113
  };
114
114
  // A mode can lead with ONE tab and fold the rest of its own under a dropdown
115
115
  // (owner, 2026-10-08: the city is Governing's tab, everything else under it).
@@ -80,8 +80,8 @@
80
80
 
81
81
  <script src="/builders/dom-utils.js?v=2026-10-25-escape"></script>
82
82
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
83
- <script src="/builders/craft-mode.js?v=2026-11-05-sections"></script>
84
- <script src="/builders/shell.js?v=2026-11-05-sections"></script>
83
+ <script src="/builders/craft-mode.js?v=2026-11-05-oversight"></script>
84
+ <script src="/builders/shell.js?v=2026-11-05-oversight"></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) -->
@@ -1,4 +1,5 @@
1
- // public-builders/gate.js — Autobongos, the owner's runner panel (/builders/gate).
1
+ // public-builders/gate.js — Autobongos, the owner's runner panel: Watch's
2
+ // Autobongos tab (/watch#autobongos; /gate redirects there since task 1005049).
2
3
  //
3
4
  // The page is still served at /gate so bookmarks keep working, but it no longer
4
5
  // holds pull requests: task 1004859 removed the held-PR list (and GET/POST
@@ -59,7 +60,7 @@
59
60
 
60
61
  function showSealed() {
61
62
  document.getElementById('gate-sealed').hidden = false;
62
- document.getElementById('gate-body').hidden = true;
63
+ document.getElementById('runner-body').hidden = true;
63
64
  // The floor in the pack's own words (ADR 0157: metic), never a rank spelled into the source.
64
65
  const body = document.getElementById('gate-sealed-body');
65
66
  if (body) body.textContent = `Available from the ${rankLabel('metic')} rank up.`;
@@ -430,7 +431,9 @@
430
431
  // + every endpoint regardless (cosmetic defence-in-depth).
431
432
  let me;
432
433
  try {
433
- me = await fetchJson('/me');
434
+ // The shell's /me read when it has one (window.__hallReads; false on a 403).
435
+ const shared = window.__hallReads && window.__hallReads['/me'];
436
+ me = shared ? await shared : await fetchJson('/me');
434
437
  } catch (err) {
435
438
  if (err && err.kind === '401') return;
436
439
  if (err && err.kind === '403') { showSealed(); return; }
@@ -443,12 +446,16 @@
443
446
  // they were just admitted to.
444
447
  if (rank !== 'metic' && rank !== 'archon') { showSealed(); return; }
445
448
 
446
- document.getElementById('gate-body').hidden = false;
449
+ document.getElementById('runner-body').hidden = false;
447
450
  if (rank !== 'archon') { showArchonOnly(); return; }
448
451
  document.getElementById('fence-panel').hidden = false;
449
452
  // Independent reads, so one round trip rather than three.
450
453
  await Promise.all([loadRunners(), loadFence(), loadBuilderRunners()]);
451
454
  }
452
455
 
453
- init();
456
+ // task 1005049: the panel is Watch's Autobongos tab, so it loads when that tab
457
+ // first opens (watch.js calls this). Once only.
458
+ let booted = false;
459
+ window.OTBWatchTabs = window.OTBWatchTabs || {};
460
+ window.OTBWatchTabs.autobongos = () => { if (booted) return; booted = true; init(); };
454
461
  })();
@@ -139,8 +139,8 @@
139
139
 
140
140
  <script src="/builders/dom-utils.js?v=2026-10-25-escape"></script>
141
141
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
142
- <script src="/builders/craft-mode.js?v=2026-11-05-sections"></script>
143
- <script src="/builders/shell.js?v=2026-11-05-sections"></script>
142
+ <script src="/builders/craft-mode.js?v=2026-11-05-oversight"></script>
143
+ <script src="/builders/shell.js?v=2026-11-05-oversight"></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>
@@ -243,8 +243,8 @@
243
243
 
244
244
  <script src="/builders/dom-utils.js?v=2026-10-25-escape"></script>
245
245
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
246
- <script src="/builders/craft-mode.js?v=2026-11-05-sections"></script>
247
- <script src="/builders/shell.js?v=2026-11-05-sections"></script>
246
+ <script src="/builders/craft-mode.js?v=2026-11-05-oversight"></script>
247
+ <script src="/builders/shell.js?v=2026-11-05-oversight"></script>
248
248
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
249
249
  <script src="/builders/palette.js" defer></script>
250
250
  <!-- task 1004727: the ONE karma vote control every task/idea list renders -->
@@ -156,8 +156,8 @@
156
156
 
157
157
  <script src="/builders/dom-utils.js?v=2026-10-25-escape"></script>
158
158
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
159
- <script src="/builders/craft-mode.js?v=2026-11-05-sections"></script>
160
- <script src="/builders/shell.js?v=2026-11-05-sections"></script>
159
+ <script src="/builders/craft-mode.js?v=2026-11-05-oversight"></script>
160
+ <script src="/builders/shell.js?v=2026-11-05-oversight"></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-10-25-escape"></script>
54
54
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
55
- <script src="/builders/craft-mode.js?v=2026-11-05-sections"></script>
56
- <script src="/builders/shell.js?v=2026-11-05-sections"></script>
55
+ <script src="/builders/craft-mode.js?v=2026-11-05-oversight"></script>
56
+ <script src="/builders/shell.js?v=2026-11-05-oversight"></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-10-25-escape"></script>
229
229
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
230
- <script src="/builders/craft-mode.js?v=2026-11-05-sections"></script>
231
- <script src="/builders/shell.js?v=2026-11-05-sections"></script>
230
+ <script src="/builders/craft-mode.js?v=2026-11-05-oversight"></script>
231
+ <script src="/builders/shell.js?v=2026-11-05-oversight"></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>
@@ -122,8 +122,8 @@
122
122
  before the craft picker so the two never stack. Home only. -->
123
123
  <script src="/builders/welcome-boot.js?v=2026-10-23-city1" defer></script>
124
124
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab" defer></script>
125
- <script src="/builders/craft-mode.js?v=2026-11-05-sections" defer></script>
126
- <script src="/builders/shell.js?v=2026-11-05-sections" defer></script>
125
+ <script src="/builders/craft-mode.js?v=2026-11-05-oversight" defer></script>
126
+ <script src="/builders/shell.js?v=2026-11-05-oversight" defer></script>
127
127
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
128
128
  <script src="/builders/palette.js" defer></script>
129
129
  <!-- 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-10-25-escape"></script>
75
75
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
76
- <script src="/builders/craft-mode.js?v=2026-11-05-sections"></script>
77
- <script src="/builders/shell.js?v=2026-11-05-sections"></script>
76
+ <script src="/builders/craft-mode.js?v=2026-11-05-oversight"></script>
77
+ <script src="/builders/shell.js?v=2026-11-05-oversight"></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-10-25-escape"></script>
44
44
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
45
- <script src="/builders/craft-mode.js?v=2026-11-05-sections"></script>
46
- <script src="/builders/shell.js?v=2026-11-05-sections"></script>
45
+ <script src="/builders/craft-mode.js?v=2026-11-05-oversight"></script>
46
+ <script src="/builders/shell.js?v=2026-11-05-oversight"></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-10-25-escape"></script>
189
189
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
190
- <script src="/builders/craft-mode.js?v=2026-11-05-sections"></script>
191
- <script src="/builders/shell.js?v=2026-11-05-sections"></script>
190
+ <script src="/builders/craft-mode.js?v=2026-11-05-oversight"></script>
191
+ <script src="/builders/shell.js?v=2026-11-05-oversight"></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-10-25-escape"></script>
129
129
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
130
- <script src="/builders/craft-mode.js?v=2026-11-05-sections"></script>
131
- <script src="/builders/shell.js?v=2026-11-05-sections"></script>
130
+ <script src="/builders/craft-mode.js?v=2026-11-05-oversight"></script>
131
+ <script src="/builders/shell.js?v=2026-11-05-oversight"></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-10-25-escape"></script>
83
83
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
84
- <script src="/builders/craft-mode.js?v=2026-11-05-sections"></script>
85
- <script src="/builders/shell.js?v=2026-11-05-sections"></script>
84
+ <script src="/builders/craft-mode.js?v=2026-11-05-oversight"></script>
85
+ <script src="/builders/shell.js?v=2026-11-05-oversight"></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-10-25-escape"></script>
85
85
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
86
- <script src="/builders/craft-mode.js?v=2026-11-05-sections"></script>
87
- <script src="/builders/shell.js?v=2026-11-05-sections"></script>
86
+ <script src="/builders/craft-mode.js?v=2026-11-05-oversight"></script>
87
+ <script src="/builders/shell.js?v=2026-11-05-oversight"></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>
@@ -52,6 +52,7 @@
52
52
  // standing → builders.js STANDING_GROUPS (+ shell.js VIEW_ALIASES)
53
53
  // work → work.js makeTabs ids
54
54
  // government → government.js makeTabs ids (two rooms since ADR 0266)
55
+ // watch → watch.js makeTabs ids (Sessions and Autobongos since task 1005049)
55
56
  // settings → settings.js RAIL_GROUPS
56
57
  // my-agents → my-agents.js ANCHORS (the agent settings left Settings, task 1005044)
57
58
  // primer → primer.md's h2 slugs + primer-live.js SECTIONS (task 1005046)
@@ -76,6 +77,15 @@
76
77
  { label: 'Constitution', href: '/government#constitution' },
77
78
  { label: 'Ranks & Permissions', href: '/government#ranks' },
78
79
  ] },
80
+ // task 1005049: Sessions and Autobongos were pages of their own; they are
81
+ // Watch's tabs now, so typing either name still finds them.
82
+ { parent: 'Watch', gate: 'nav-watch', items: [
83
+ { label: 'People', href: '/watch#people' },
84
+ { label: 'Operations', href: '/watch#operations' },
85
+ { label: 'Security', href: '/watch#security' },
86
+ { label: 'Sessions', href: '/watch#sessions' },
87
+ { label: 'Autobongos', href: '/watch#autobongos' },
88
+ ] },
79
89
  // task 1005047: the owner's one money page, a section per kind of money. The
80
90
  // treasury lived in the Primer (and before that on the Economy page) until then,
81
91
  // so 'Treasury' still finds it.
@@ -112,8 +112,8 @@
112
112
 
113
113
  <script src="/builders/dom-utils.js?v=2026-10-25-escape"></script>
114
114
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
115
- <script src="/builders/craft-mode.js?v=2026-11-05-sections"></script>
116
- <script src="/builders/shell.js?v=2026-11-05-sections"></script>
115
+ <script src="/builders/craft-mode.js?v=2026-11-05-oversight"></script>
116
+ <script src="/builders/shell.js?v=2026-11-05-oversight"></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
@@ -207,8 +207,8 @@
207
207
  chrome exists before the page script runs. -->
208
208
  <script src="/builders/dom-utils.js?v=2026-10-25-escape"></script>
209
209
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
210
- <script src="/builders/craft-mode.js?v=2026-11-05-sections"></script>
211
- <script src="/builders/shell.js?v=2026-11-05-sections"></script>
210
+ <script src="/builders/craft-mode.js?v=2026-11-05-oversight"></script>
211
+ <script src="/builders/shell.js?v=2026-11-05-oversight"></script>
212
212
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
213
213
  <script src="/builders/palette.js" defer></script>
214
214
  <!-- 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-10-25-escape"></script>
78
78
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
79
- <script src="/builders/craft-mode.js?v=2026-11-05-sections"></script>
80
- <script src="/builders/shell.js?v=2026-11-05-sections"></script>
79
+ <script src="/builders/craft-mode.js?v=2026-11-05-oversight"></script>
80
+ <script src="/builders/shell.js?v=2026-11-05-oversight"></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>
@@ -43,8 +43,8 @@
43
43
 
44
44
  <script src="/builders/dom-utils.js?v=2026-10-25-escape"></script>
45
45
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
46
- <script src="/builders/craft-mode.js?v=2026-11-05-sections"></script>
47
- <script src="/builders/shell.js?v=2026-11-05-sections"></script>
46
+ <script src="/builders/craft-mode.js?v=2026-11-05-oversight"></script>
47
+ <script src="/builders/shell.js?v=2026-11-05-oversight"></script>
48
48
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
49
49
  <script src="/builders/palette.js" defer></script>
50
50
  <!-- The chart kit and the timeline's series builders (task 1003447). Both MUST
@@ -58,8 +58,8 @@
58
58
  chrome exists before the page script runs. -->
59
59
  <script src="/builders/dom-utils.js?v=2026-10-25-escape"></script>
60
60
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
61
- <script src="/builders/craft-mode.js?v=2026-11-05-sections"></script>
62
- <script src="/builders/shell.js?v=2026-11-05-sections"></script>
61
+ <script src="/builders/craft-mode.js?v=2026-11-05-oversight"></script>
62
+ <script src="/builders/shell.js?v=2026-11-05-oversight"></script>
63
63
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
64
64
  <script src="/builders/palette.js" defer></script>
65
65
  <!-- the branding pack's currency label, loaded BEFORE roster.js. -->
@@ -1,4 +1,5 @@
1
- // public-builders/sessions.js — the Session Ledger (/builders/sessions).
1
+ // public-builders/sessions.js — the Session Ledger: Watch's Sessions tab
2
+ // (/watch#sessions; the /sessions page it was folded in task 1005049).
2
3
  //
3
4
  // Metic+ monitoring view of the BFG session corpus (ADR 0027 / cluster 6D;
4
5
  // the floor moved archon→metic in ADR 0157). Read-only. Fetches /api/bongos/me
@@ -285,12 +286,12 @@
285
286
  // A failed access check says so in the same panel, under its own heading.
286
287
  function showSealed(message, heading) {
287
288
  const floor = rankLabel('metic');
288
- const gate = $('#gate-scroll');
289
- $('#gate-h').textContent = heading || `${floor} and up`;
290
- if (message) $('#gate-body').textContent = message;
289
+ const gate = $('#sess-sealed');
290
+ $('#sess-sealed-h').textContent = heading || `${floor} and up`;
291
+ if (message) $('#sess-sealed-body').textContent = message;
291
292
  gate.hidden = false;
292
293
  $('#stats-scroll').hidden = true;
293
- $('#sessions-scroll').hidden = true;
294
+ $('#sess-ledger-scroll').hidden = true;
294
295
  }
295
296
 
296
297
  // ---- paging --------------------------------------------------------------
@@ -312,7 +313,7 @@
312
313
  // the columns. Keeping it a separate sibling below the ledger is what holds it still.
313
314
  // (This page used to carry a .ledger-table-wrap scrollport; task 1003470 removed it
314
315
  // because the wrapper broke the shell's sticky th. The separate mount outlived it.)
315
- // Table markup stays in sessions.html; the PAGER is the kit's.
316
+ // Table markup stays in watch.html's Sessions tab; the PAGER is the kit's.
316
317
 
317
318
  // Guarded the way every other kit consumer guards it (profile.js): the kit is a
318
319
  // separate <script>, so a cache miss or a load-order slip must degrade to a named
@@ -428,9 +429,9 @@
428
429
  const totals = data.totals || { total: data.total || sessions.length };
429
430
  state.total = num(totals.total);
430
431
  state.shown = sessions.length;
431
- $('#gate-scroll').hidden = true;
432
+ $('#sess-sealed').hidden = true;
432
433
  $('#stats-scroll').hidden = false;
433
- $('#sessions-scroll').hidden = false;
434
+ $('#sess-ledger-scroll').hidden = false;
434
435
  renderStats(totals);
435
436
  renderTable(sessions);
436
437
  syncTypeOptions(data.session_types);
@@ -528,7 +529,12 @@
528
529
  // 1. Who is viewing? (rank gate — the server enforces too.)
529
530
  let builder;
530
531
  try {
531
- const res = await api.request('GET', `${API}/me`);
532
+ // The shell's /me read, shared on window.__hallReads, so opening the tab costs
533
+ // no second round trip; asked here only without it (task 1005049).
534
+ const shared = window.__hallReads && window.__hallReads['/me'];
535
+ const res = shared
536
+ ? await shared.then((d) => (d ? { status: 200, ok: true, data: d } : { status: 0, ok: false }))
537
+ : await api.request('GET', `${API}/me`);
532
538
  if (res.status === 401) {
533
539
  window.location.assign(`${API}/auth/web/start`);
534
540
  return;
@@ -569,5 +575,10 @@
569
575
  await fetchPage();
570
576
  }
571
577
 
572
- load();
578
+ // task 1005049: the ledger is Watch's Sessions tab, so it loads when that tab
579
+ // first opens (watch.js calls this), not on every Watch visit: each load is an
580
+ // audited read on the server. Once only.
581
+ let booted = false;
582
+ window.OTBWatchTabs = window.OTBWatchTabs || {};
583
+ window.OTBWatchTabs.sessions = () => { if (booted) return; booted = true; load(); };
573
584
  })();
@@ -393,8 +393,8 @@
393
393
  chrome exists before the page scripts run. -->
394
394
  <script src="/builders/dom-utils.js?v=2026-10-25-escape"></script>
395
395
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
396
- <script src="/builders/craft-mode.js?v=2026-11-05-sections"></script>
397
- <script src="/builders/shell.js?v=2026-11-05-sections"></script>
396
+ <script src="/builders/craft-mode.js?v=2026-11-05-oversight"></script>
397
+ <script src="/builders/shell.js?v=2026-11-05-oversight"></script>
398
398
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
399
399
  <script src="/builders/palette.js" defer></script>
400
400
  <!-- shared component kit (window.OTBKit) — section rail (task 2166). -->
@@ -356,8 +356,7 @@
356
356
  // Metic+ oversight could not honestly hold it. Everything below IS a rank
357
357
  // surface, so this group's gate and audience are unchanged.
358
358
  { id: 'watch', label: 'Watch', icon: 'watch', href: '/watch', gate: 'government', position: true },
359
- { id: 'gate', label: 'Autobongos', icon: 'gate', href: '/gate', gate: 'government', position: true }, // task 1004859: the runner panel; URL kept for bookmarks
360
- { id: 'sessions', label: 'Sessions', icon: 'sessions', href: '/sessions', gate: 'government', position: true },
359
+ // task 1005049: Sessions and Autobongos (/gate) are tabs on Watch; both URLs redirect there.
361
360
  // The project's own fundamentals (task 1003280, goal 1000072). Mirrors the
362
361
  // server's requireGovernmentPage floor; cosmetic only, as every item here is.
363
362
  { id: 'project-settings', label: 'Project settings', icon: 'settings', href: '/project-settings', gate: 'government', position: true },
@@ -230,8 +230,8 @@
230
230
 
231
231
  <script src="/builders/dom-utils.js?v=2026-10-25-escape"></script>
232
232
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
233
- <script src="/builders/craft-mode.js?v=2026-11-05-sections"></script>
234
- <script src="/builders/shell.js?v=2026-11-05-sections"></script>
233
+ <script src="/builders/craft-mode.js?v=2026-11-05-oversight"></script>
234
+ <script src="/builders/shell.js?v=2026-11-05-oversight"></script>
235
235
  <script src="/builders/palette.js" defer></script>
236
236
  <script src="/builders/gov-living.js?v=2026-10-09-positions1"></script>
237
237
  <script src="/builders/gov-feeds.js?v=2026-10-09-living3"></script>
@@ -224,8 +224,8 @@
224
224
 
225
225
  <script src="/builders/dom-utils.js?v=2026-10-25-escape"></script>
226
226
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
227
- <script src="/builders/craft-mode.js?v=2026-11-05-sections"></script>
228
- <script src="/builders/shell.js?v=2026-11-05-sections"></script>
227
+ <script src="/builders/craft-mode.js?v=2026-11-05-oversight"></script>
228
+ <script src="/builders/shell.js?v=2026-11-05-oversight"></script>
229
229
  <script src="/builders/palette.js" defer></script>
230
230
  <!-- The kit, for its ONE renderer: the full-size ship-time visual figure
231
231
  (task 1003829), which the older reviews still show. -->
@@ -58,8 +58,8 @@
58
58
  time so the chrome exists before the deferred page scripts execute. -->
59
59
  <script src="/builders/dom-utils.js?v=2026-10-25-escape"></script>
60
60
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
61
- <script src="/builders/craft-mode.js?v=2026-11-05-sections"></script>
62
- <script src="/builders/shell.js?v=2026-11-05-sections"></script>
61
+ <script src="/builders/craft-mode.js?v=2026-11-05-oversight"></script>
62
+ <script src="/builders/shell.js?v=2026-11-05-oversight"></script>
63
63
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
64
64
  <script src="/builders/palette.js" defer></script>
65
65
  <!-- task-detail.js still owns the #/idea/N and #/blocker/N deep-link overlay
@@ -140,8 +140,8 @@
140
140
 
141
141
  <script src="/builders/dom-utils.js?v=2026-10-25-escape"></script>
142
142
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
143
- <script src="/builders/craft-mode.js?v=2026-11-05-sections"></script>
144
- <script src="/builders/shell.js?v=2026-11-05-sections"></script>
143
+ <script src="/builders/craft-mode.js?v=2026-11-05-oversight"></script>
144
+ <script src="/builders/shell.js?v=2026-11-05-oversight"></script>
145
145
  <script src="/builders/palette.js" defer></script>
146
146
 
147
147
  <script src="/builders/idea-objects.js?v=2026-09-27-split"></script>
@@ -144,8 +144,8 @@
144
144
 
145
145
  <script src="/builders/dom-utils.js?v=2026-10-25-escape"></script>
146
146
  <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
147
- <script src="/builders/craft-mode.js?v=2026-11-05-sections"></script>
148
- <script src="/builders/shell.js?v=2026-11-05-sections"></script>
147
+ <script src="/builders/craft-mode.js?v=2026-11-05-oversight"></script>
148
+ <script src="/builders/shell.js?v=2026-11-05-oversight"></script>
149
149
  <script src="/builders/palette.js" defer></script>
150
150
  <script src="/builders/brand-holes.js?v=2026-09-29-aqfix"></script>
151
151
  <script src="/builders/tweak-editor-lib.js?v=2026-09-29-tw27"></script>